2009-12-11 87 views
0

我使用VS.NET附加到一个进程,该进程有很多DLL加载,我构建了一个DLL并尝试在我的DLL中设置一个断点。我点击“New Breakpoint”并键入我的函数名称Func_A并选中“Use Intellisense to verify”框。然后我点击确定,但VS.net抱怨它找不到该函数。使用VS.NET调试应用程序

当连接进程时,我检查了VS.NET的输出,它没有在我的DLL行后面有一个“无法加载符号”的消息,所以我认为它已经成功找到了我的PDB文件。我不知道为什么我不能设置断点。

我的项目是C#托管项目。请注意,对于所有的DLL,一些有调试信息,有些没有,但我相信VS.Net已经确定了我的调试信息。

请建议等方式来尝试...

另一个问题是,有没有什么工具来查看,可在装配DLL文件中设置断点的功能是什么?

回答

1

如果你看到了很多的DLL装载那么很可能你正在运行在本地模式下的调试器。这是Tools + Attach to Process对话框中的一个选项,一定要选择Managed。

到目前为止,避免这种问题的最简单方法是加载源代码文件并通过单击编辑器窗口的左侧栏来设置断点。另外,请勿使用“附加到进程”。使用Project + Properties,Debug选项卡,选择“启动外部程序”,然后选择加载程序集的.exe文件。您现在只需按F5即可开始调试。请注意,Express版本中不提供此选项。

1

可以做一些更多的细节做的真的,但在这里不用...

你有DLL的来源?如果是这样,只需打开代码并添加断点即可。

如果你不这样做,那么你基本上依赖于Intellisense,我发现它并不总是可靠的,特别是如果涉及托管的C++程序集。为了帮助,您可以使用Reflector来查看DLL,以获取完整的名称空间函数名称,并尝试忽略Intellisense。

使用反射器还可以让你看看DLL是否被模糊处理(如果第三方)。

希望这有助于给你一些关于如何解决它的新想法。

ķ