2012-03-02 88 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