用于调试 Borland 和 Visual Studio 应用程序的工具
Posted
技术标签:
【中文标题】用于调试 Borland 和 Visual Studio 应用程序的工具【英文标题】:Tool for debugging Borland & Visual Studio applications 【发布时间】:2011-09-23 07:26:00 【问题描述】:有时我必须调试使用 Borland C++ Builder 编写的应用程序。此应用程序加载使用 Visual C++ 编译的 dll。是否有可以调试应用程序的两个部分的调试器?目前我必须做出决定——要么我可以轻松设置断点并在 Visual Studio 中查看源代码,要么我必须启动 Borland C++,但我无法使用 Visual-Studio 编译的 dll 中的源代码。
感谢您的帮助, 托比亚斯
【问题讨论】:
谷歌搜索“tds to pdb converter”显示出有希望的命中。 是否可以在 Visual C++ 或 Borland 中编译应用程序的两个部分? 【参考方案1】:你可以试试OllyDbg - 版本 1.x 似乎不支持最新的 Win 版本,但也有 2.0,虽然它仍处于 alpha 状态(我自己还没试过那个)。
编辑 - 澄清:
源码调试 OllyDbg 读取 Borland 中的调试信息并 微软格式。此信息包括源代码和名称 函数、标签、全局和静态变量。支持动态 (堆栈)变量和结构非常有限。
以上内容来自here。
更新:
我不熟悉 Borland C++ Builder,但在 this link,您可以找到一些解释如何处理 Borland 和 MS 之间的一些互操作性问题的文章,这些文章可能会有所帮助。
【讨论】:
OllyDbg 是否能够加载这两种调试符号类型? OllyDbg 2 在调试应用程序时遇到了一些问题,所以它对我不起作用。也许它适用于其他人。【参考方案2】:如果这两个部分都使用 ulink 链接器构建并且有调试信息,您可以尝试 cdb32 调试器(来自 ulink 链接器作者)
cdb32 仍处于 alpha 阶段,我个人从未尝试过这种“混合”调试
【讨论】:
哪里可以下载cdb32?谷歌没有发现任何有用的东西。 由于它仍处于 alpha 阶段,因此无法免费下载,但如果您愿意,我可以邮寄给您 第一个公测版 v 7.3 发布【参考方案3】:您是否尝试过在 VS 中加载 DLL 代码,在 BCB 中加载应用程序代码,以及将两个调试器同时附加到同一个运行进程?不确定 Windows 是否允许这样做,但可能值得一试。
【讨论】:
谢谢,这是一个很棒的提示! !:)【参考方案4】:我怀疑你的问题没有完美的答案,你将不得不以某种方式妥协,我相信你已经在这样做了。
我在工作中遇到了与您类似的问题。我使用的应用程序是用 Python 而不是 Borland C++ 编写的,但与您的情况一样,这些应用程序依赖于相当大的 Visual Studio 编译的 DLL 来执行某些功能。
我调试这些应用程序的方法涉及两种调试策略的组合:使用交互式调试器和所谓的“printf”调试技术。
我基本上做的是选择两个领域之一作为我的主要调试重点,这决定了我的调试方法:
如果在给定情况下我决定需要更详细地调试 DLL,那么我将使用 VS 调试器。我将可执行文件设置为在 DLL 项目中作为我的 python 脚本运行,这样就可以对 DLL 代码进行全面调试。如果我需要 Python 端的调试支持,那么我添加打印语句。如果我需要在 Python 端设置断点来检查某些值,我只需打印所有这些值,然后立即调用一个什么都不做但在 VS 中设置了断点的 C++ 函数。
1234563 ,所以基本上与上述相反。我知道这不是您期望的答案,但在我看来这是一个不错的解决方案。
【讨论】:
【参考方案5】:看起来可以将C++ Builder生成的调试信息转换成WinDbg可以理解的格式(link to discussion)。如果是这样,您可以使用它来调试应用程序的两个部分(不过我还没有尝试过)。
【讨论】:
【参考方案6】:您可以将 .map 文件转换为 Microsoft 的调试文件格式 http://code.google.com/p/map2dbg/
现在你可以使用 Windebug 了;还有一个工具提到了转换为pdb格式,所以你可以试试vc++调试器
【讨论】:
有趣的链接:openwatcom.org/index.php/Debugging_Format_Interoperability以上是关于用于调试 Borland 和 Visual Studio 应用程序的工具的主要内容,如果未能解决你的问题,请参考以下文章
stu--CLEVR: A Diagnostic Dataset for Compositional Language and Elementary Visual Reasoning
Borland Builder C++ 6 中的 CoreAudio API
Visual Studio:区分 app.config 以用于调试和发布模式