2016-07-22 281 views
0

我目前正在嘗試調試PyCaffe的Caffe for Windows問題。從PyCharm調試到Visual Studio C++代碼

由於bug in Python Tools for Visual Studio,PTVS不起作用,所以我使用PyCharm並嘗試通過Visual Studio 2013連接到PyCaffe的進程。也就是說,我在一個Python腳本上運行PyCharm調試器,並將斷點設置爲我稱之爲PyCaffe的Python入口點。

我調用PyCharm中的Python腳本,它調用在VS中用C++編寫的模塊。我想用C++調試這些模塊。所以我試圖附加到在VS中設置斷點的PyCharm或Python進程。

問題是在Visual Studio C++代碼中PyCaffe的入口點沒有觸發斷點。

有沒有人成功地獲得這種東西的工作或是否有一種替代方式做到這一點?

+0

Pycharm是IDE,你如何通過VS 2013連接?這聽起來很混亂。你在調試C++代碼或python代碼嗎?它真的不清楚。 – limbo

+0

@limbo我在PyCharm中調試Python腳本,它調用在VS中用C++編寫的模塊。我想用C++調試這些模塊。 – empty

回答

0

我在幾年前面臨類似的問題,試圖 調試用戶模式驅動程序的願望是從RPC自動加載,我找到了解決辦法是:對於Windows

  1. 下載調試工具(視在您的系統x86或x64上),希望是免費的,從Microsoft下載。
  2. 在C代碼的地方添加「__asm int 3」(這是硬件斷點的asm指令),在那裏您讓中斷點生效。
  3. 編譯C程序,正常地帶有調試信息(這部分很重要,因爲幫助調試器找到源文件),這應該不會有任何問題。
  4. 將調試器附加到正在運行的進程(在我的情況下是explorer進程),在你的情況下應該是首先調用庫的進程,例如,如果PyCharm爲新的python代碼創建進程,調試器需要連接到那個進程(你可以通過在python中設置一個斷點來管理這個過程,希望給你時間來完成附加過程),我想出來的簡單方法是讓進程崩潰,因爲「__asm int 3「會導致進程崩潰,如果沒有連接調試器,則可以利用此功能來等待崩潰,並且當Windows向您顯示屏幕」進程...檢測到需要關閉的問題「時,您知道誰是你正在尋找的過程。

這可能是痛苦的第一次,但對我來說相當有效的,因爲你 可以看到從一個程序到另一個數據流,

0

我們附加到一個進程,並允許在沒有從VS調試器啓動的代碼中設置斷點。但是一個重要的問題是,我們經常在VS中調試/運行應用程序,例如,我們調試在IIS下運行的Web代碼,我們將附加到IIS進程或其他程序。

您的項目與上面的示例不同,您在Pycharm(而不是VS)中運行/調試您的應用程序,但您希望使用VS Attach來處理函數,所以它會有一個限制。正如你所說你在PyCharm中調試腳本,並且想要調用C++,所以你會檢查PyCharm是否支持VS中的附加工具等類似功能。