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

zar*_*zar 5 c++ debugging mfc visual-studio-2010 visual-studio

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

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

Gui*_*one 2

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

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

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

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

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

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