2012-03-02 92 views
1

我有一個用C++編譯的dll,在VS2010下,我從python項目中調用它。在VS2010中調試C++ dll,從python

我有一個錯誤,在DLL裏面,我希望能夠使用VS工具進行調試,直到我到達「讀取無效內存位置」的任務。

調試/步入功能沒有步入dll中的功能代碼。

我試圖附加調試器(並從命令行運行python代碼/停止在一個raw_input給我的PID,然後附加調試器)。同樣的事情發生。我打開了python代碼中的斷點,但沒有在dll中。

我最終發現我的錯誤,在我的頭撞在我的顯示器上,使用dll內的舊式跟蹤。但是必須有一種方法能夠調試VS中現有的/打開的項目......我將再次遇到這個問題,所以我希望現在能夠學習一些東西,並且避免將來損壞我的顯示器。 :)

注意:C++ dll和pdb文件都位於與python文件相同的目錄中,它們當然會自動內置到Debug文件夾中,並且它們也位於系統路徑中的文件夾中。任何可能的DEBUG符號都被啓用。我正在使用Python 2.7。

回答

1

如果您希望能夠進入和調試dll,那麼您需要在bin目錄中有.pdb文件,否則您將無法訪問任何調試符號。這個.pdb允許visual studio讀取.dll文件並進入它的方法調用。

+0

bin目錄在哪裏?我必須手動指定我的dll路徑cdll.LoadLibrary - 路徑\ foldername \ output \ Win32 \ Debug \中。這也是我看到.pdb文件的地方。我沒有bin目錄 - python解決方案不會創建任何其他目錄。 – Thalia 2012-03-02 21:32:22

+0

好的,如果pdb文件已經存在,那麼它應該在生成項目時加載這些符號。當你運行exe文件時,你可以將調試器附加到這個過程中,當你點擊代碼的一部分時,它應該進入文件(在第一個使用dll的方法上放置一個斷點) – jzworkman 2012-03-02 22:32:24

+0

雖然沒有,這就是爲什麼我很困惑。順便說一句,我從一個python程序(而不是exe)調用dll – Thalia 2012-03-02 22:44:38