2012-03-27 80 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