2012-03-27 41 views
1

我想调试我创建的本地C++ COM DLL中的一些问题,并希望从中启动Visual Studio(2008)调试器。这个dll被另一个dll所调用,所以基本上我的代码通过这个插入另一个应用程序。无论如何,过去我曾使用C#创建这个DLL,并能够使用System.Diagnostics.Debugger.Break()方法。有没有类似的东西可以使用?我看到了一些关于DebugBreak和__debugbreak的文章,但这似乎不起作用,它似乎阻止我的代码在该语句之外执行。在C++代码中启动调试器

EDT:我也跟着下面paulsm4的意见,发现断点没有工作,它会告诉我:“断点将目前尚未受到打击无符号已加载这个文件。”

回答

1

理想,您将拥有COM/ActiveX .dll的项目源代码。

如果是这样的话,只需设置一个断点在您的.dll的代码,在调试器中运行您的程序......,就是这样。

请注意 “托管代码”(如C#/。NET .exe或.dll)和 “原生代码”(如您的COM/ActiveX .dll文件)之间的区别。为了调试MSVS2008下的“原生代码”,你需要指定“混合模式”:

http://msdn.microsoft.com/en-us/library/kbaht4dh%28v=vs.90%29.aspx

+0

感谢您的信息。我会试一试。我有COM.dll的源代码,但没有别的。我是使用visual studio调试器的新手,所以我在这里有一个很大的愚蠢问题,我该如何在调试器中运行该程序。当我用它来写可执行文件时,我只是开始调试,但我不知道如何通过它启动这个其他应用程序。 – Travis 2012-03-27 23:49:56

+0

好吧,我想我通过将它添加到我的项目的调试器命令路径中来指出这一部分。我会试一试。 – Travis 2012-03-27 23:52:55

+0

我刚刚意识到这可能比我想象的更复杂。调试时,我发现调用我的DLL的DLL不是由应用程序启动的,而是由应用程序启动的服务启动的。我是否需要让调试器意识到这一点? – Travis 2012-03-28 01:18:57