使用VS.NET调试应用程序

时间:2009-12-11 10:03:26

标签: c# visual-studio debugging

我正在使用VS.NET附加到一个进程,该进程有很多DLL加载,我构建了一个DLL并尝试在我的DLL中设置一个断点。我单击“新断点”并键入我的函数名称Func_A并选中“使用智能感知验证”框。然后我点击确定,但VS.net抱怨它无法找到该功能。

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

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

请建议其他尝试方法......

另一个问题是有没有工具可以看到可以在程序集DLL文件中设置断点的函数?

2 个答案:

答案 0 :(得分:1)

真的可以处理更多细节,但这里有......

你有DLL的来源吗?如果是这样,只需打开代码并在任何地方添加断点。

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

使用反射器还可以让你看看DLL是否被混淆(如果是第三方)。

希望这有助于为您提供一些如何解决它的新想法。

ķ

答案 1 :(得分:1)

如果您看到加载了很多DLL,那么您可能正在以纯模式运行调试器。它是Tools + Attach to Process对话框中的一个选项,请务必选择Managed。

到目前为止,避免这种麻烦的最简单方法是加载源代码文件并通过单击编辑器窗口的左栏来设置断点。另外,不要使用Attach to Process。使用Project + Properties,Debug选项卡,选择“Start external program”并选择加载程序集的.exe。您现在可以通过按F5开始调试。请注意,Express版本中没有此选项。