簡體   English   中英

如何將VS Code的Python調試器附加到正在運行的進程?

[英]How do I attach VS Code's Python debugger to a running process?

我正在使用在VS Code上運行的Jayamanne的Python版本0.7.0。 將調試器附加到正在運行的進程的文檔需要添加額外的代碼並配置端口和地址。 我想通過簡單地選擇或指定進程名稱或id必須有一個更簡單的方法。

顯然,VS Code能夠基於Node.JS文檔和演示。 Python解釋器也能夠實現它,因為它是我在Visual Studio 2017上正常調試應用程序的方式。

如何配置VS Code Python以按名稱或ID附加到進程? 這可能嗎? 如果沒有,為什么文檔沒有明確說明?

沒有“簡單”的方式。 按照您提到的有關“添加額外代碼並配置端口和地址”的文檔。

您只能將C調試器“附加”到任何進程, 因為Windows調試API具有此功能並提供在幕后工作的所有必要機制,以使這種看似簡單的操作成為可能(使用OS停止目標進程,創建一個輔助線程)它,操縱它的內存(包括用int 3替換機器代碼來設置斷點) - 而Visual Stidio使用源代碼和PDB文件將內存數據解析為C或C ++級別的構造。

對於Python來說情況並非如此:雖然您可以在C級別進入流程並使用C API從輔助線程操作解釋器實例,但如果以某種方式獲取其地址,則該API無法使其中斷從傳遞給它的現有代碼開始執行您的指令,同時仍然能夠訪問現有代碼。

pdb通過“現有代碼” sys.settrace您進入調試會話:它設置解釋器在某些時刻調用sys.settrace回調 ,以便能夠在斷點處調出其控制台和/或自行包裝程序並捕獲異常。

您描述的調試器的行為相同:只是提供控制台提示,而不是啟動控制台提示,其機制充當服務器,通過套接字接受來自連接的IDE客戶端的命令。

暫無
暫無

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

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