簡體   English   中英

有沒有辦法調試在`multiprocessing.Process`上運行的Python代碼?

[英]Is there a way to debug Python code which runs on a `multiprocessing.Process`?

我想要的是能夠使用multiprocessing程序包逐步調試在單獨進程中運行的代碼。

我記得大約一年前尋找解決方案,但沒有找到解決方案。 有人告訴我要做很多日志記錄,但是當然這是次等方法。 那么,也許有人在此期間提出了解決方案? 例如,某種使新生成的進程與調試器連接的機制?

您可以啟動該過程,而無需在此過程中使用Process接口,則需要手動調試。

您可能會發現WingIDE有用。 它的調試器非常好,它甚至支持調試遠程進程,而對調試的代碼只需要很少的測試。 它不是免費的,但值得付出代價,恕我直言。 (我完全不隸屬於Wingware,只是滿意的客戶...)

要在Wing中啟用遠程調試,您需要將文件wingdbstub.py復制到要調試的應用程序所在的目錄,然后將其導入到要開始調試的代碼中。 (在WingIDE文檔中對此進行了相當全面的介紹 。)

如果您使用此示例並修改myfunc()方法,使其看起來如下所示:

def myfunc(conn, commands):
    import wingdbstub
    # ... remainder same as original example

您應該能夠啟動WingIDE,在import行之后立即設置斷點,然后從控制台啟動示例腳本。 它應該自動連接到Wing,並在您的斷點處停止。

如果您在使調試連接正常工作時遇到任何問題,則可能會發現這篇文章很有幫助。 (WingIDE文檔在覆蓋連接問題方面也做得不錯。)

與其通過Process啟動函數或類,不如直接調用它並像往常一樣調試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM