繁体   English   中英

如何在Visual Studio中调试库的发行版本

[英]how to debug a release version of library in Visual Studio

我需要调试链接库的发布版本。 我已经在本文之后使用我的发布版本生成调试信息,但是我如何对库项目执行相同的操作? 请注意,库项目在属性中没有链接页面,其中在上面的链接中创建了调试信息。 我正在使用VS2010。

我真正想要的是让TRACE在调试库时工作。 我试图将调试版本的库与发布exe链接,但它会创建链接器错误。

我真正想要的是让TRACE工作......

你的意思是MFC TRACE宏? 将消息写入调试器的调试/输出窗口的那个?

不幸的是,即使您确实修复了构建设置,以便最终的可执行文件包含静态库的调试信息,它也不会带回那些跟踪语句。 TRACE是一个宏,因此由编译器预处理器处理。 在发布模式下编译时,该宏被重新定义为无操作。 就像从源代码中删除了TRACE语句一样。

即使您确实解决了向库和可执行文件添加调试符号的问题,也不会将这些跟踪语句带回来。 它们在编译阶段被删除。

那么该怎么办? 事实证明,如果你深入挖掘这些宏,他们最终会调用Win32函数OutputDebugString 此调用在ms库的调试版和发行版中都可用。 所以...你可以用对OutputDebugString的显式调用来替换跟踪宏 - 编写代码并不方便,但至少你会在发布模式下获得调试输出。

顺便说一句,几年前我终于放弃了所有这些宏,我们已经用log4cplus调用完全替换了它们。 任何日志记录框架都会比跟踪宏更好 - 因为您真正需要跟踪的时间不是在您调试时,而是在您的代码处于生产状态而您无法在本地重现问题时。 记录客户可以发送给您的文件要好得多,然后依靠只能在调试器中工作的跟踪。 无论如何要考虑的事情......

静态库没有链接,因此链接器选项不可用也就不足为奇了。 您基本上只需要告诉编译器生成调试信息。 从那里开始,创建库只不过是将一堆目标文件放在一个文件中。

基本上,只需告诉编译器生成调试信息,该库将包含调试信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM