调试Visual Studio 2010 DLL项目
我正在尝试从Visual Studio 2010调试C / C ++本机DLL项目。我正在尝试按照这些说明操作: http : //msdn.microsoft.com/en-us/library/c91k1xcf(v = VS.100 )的.aspx
我想使用内置的调试器,并能够像常规的.exe项目一样执行代码,检查结构等。 上面的页面上的说明描述了配置属性下的调试类别,我没看到。
http://img707.imageshack.us/img707/4402/lalasz.png
只需按F5进行调试就会出现以下错误:
无法启动程序’C:\ Users ……. Test.dll’
我已经多次将调试器用于常规.exe项目,并且在这台计算机上运行正常。 我不确定我现在是否只是错过了一些非常明显的东西。
编辑:由于我从一开始就没有说清楚,我希望Visual Studio将我的DLL加载到存根过程中,然后让我从那里调试源代码,就像OllyDbg一样。
我的DLL不是包含要导出和调用的一堆函数的类型。 相反,它在DllMain中执行切换/大小写,并且在DLL_PROCESS_ATTACH上将生成一个新线程。 因此,我需要Visual Studio才能将我的DLL加载到存根可执行文件中,并允许我设置断点等。
在解决方案资源管理器窗口中右键单击解决方案名称并获取解决方案属性。 请注意,窗口显示“Solution Test Property Pages”。
右键单击项目名称(以粗体显示),而不是设置项目选项。
您可能将启动项目作为生成dll的项目。
您有两个选择:将启动项目更改为生成使用该DLL的可执行文件的另一个项目,或者从项目属性配置dll项目的调试设置以启动使用该DLL的外部应用程序(Project Properties / Debug / Command) )。
原生DLL不能独立运行 – 它们必须在某些程序的上下文中运行。 请参阅您引用的说明页面的这一部分。
“如果从创建DLL的项目开始调试,则必须指定要在调试DLL时使用的可执行文件。”
您也会从Managed项目遇到此问题。 Visual Studio告诉你的是它无法运行DLL,就像你无法从资源管理器中双击DLL并运行程序一样。
为了调试DLL,编写一个小型控制台应用程序,它调用DLL中的函数并练习代码。 如果您的DLL具有函数foo()
,请在控制台应用程序中从main
调用foo()
。 将控制台应用程序设置为“启动”项目,右键单击解决方案资源管理器中的项目名称并选择其选项。
然后,当您按F5时,您将运行控制台应用程序,它将调用DLL。