C++ 调试AutoCAD模块

C++ 调试AutoCAD模块,c++,visual-studio,debugging,autocad,C++,Visual Studio,Debugging,Autocad,我正在从事一个项目,该项目是AutoCAD的dll模块,它向环境中添加了一些新功能(如菜单、对象等)。当然,模块的菜单和对象中存在一些bug 问题如下,当我在对话框、菜单项、编辑字段中或在某些操作过程中看到一些bug时,我如何在源代码中找到负责这些bug的相应位置?除了普通的调试,我还应该使用什么工具 我在VS2010中使用C++。源代码大约有50万行,因此需要一些时间来熟悉它。Autocad不提供其二进制文件(pdb文件)的调试信息 如果崩溃在您的模块中,那么调试应该相当容易,只要确保您有相应

我正在从事一个项目,该项目是AutoCAD的dll模块,它向环境中添加了一些新功能(如菜单、对象等)。当然,模块的菜单和对象中存在一些bug

问题如下,当我在对话框、菜单项、编辑字段中或在某些操作过程中看到一些bug时,我如何在源代码中找到负责这些bug的相应位置?除了普通的调试,我还应该使用什么工具


我在VS2010中使用C++。源代码大约有50万行,因此需要一些时间来熟悉它。

Autocad不提供其二进制文件(
pdb
文件)的调试信息

如果崩溃在您的模块中,那么调试应该相当容易,只要确保您有相应的
pdb
dll
。通过
dll
,我也在谈论
arx
dbx
文件


如果崩溃发生在AutoCAD模块中。。。根据经验,我99.9%确信源代码是您的代码,而不是AutoCAD的。

以下是我用于C#/.NET的方法。我不能保证它也适用于C++ DLL,但是值得一试。 首先,在解决方案的Visual Studio配置文件中,将以下行添加到调试|任意CPU配置:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  <!-- there should be other options already in here! -->
  <StartAction>Program</StartAction>
  <StartProgram>c:\program files\autocad2008\acad.exe</StartProgram>
</PropertyGroup>

节目
c:\program files\autocad2008\acad.exe
我使用AutoCAD 2008-替换可执行文件的路径。在VisualStudio中,您应该能够从配置屏幕进行设置,但在Express版本中,您需要在记事本或类似编辑器中手动进行此更改

接下来,确保在项目中引用的任何AutoCAD提供的dll的“复制本地”属性设置为
False

在代码中设置所需的任何断点

现在,当您“运行”dll时,它应该启动AutoCAD

使用
netload
在AutoCAD中加载dll(请确保选择调试版本-发布版本将不起作用!)


模块应运行到您的第一个断点。

您是否有使用AutoCAD的经验?我估计大概有98%的可能性。它们通常不检查参数中的null,因此请确保您确实检查了所有参数是否为null。参数超出范围时同上。您需要非常小心向AutoCAD非托管函数发送的内容,它们可能非常脆弱。没有太多的尝试…抓住它。@CADbloke确实是我的经验:)。我同意它很容易崩溃,但如果崩溃了,很可能是你的错——没有打开一个实体进行写入,重新打开一个打开的实体,等等……同意。它根本不能容忍草率的行为。