用于调试Borland和Visual Studio应用程序的工具

Tool for debugging Borland & Visual Studio applications

本文关键字:应用程序 工具 Studio Visual 调试 Borland 用于      更新时间:2023-10-16

有时我必须调试用Borland c++ Builder编写的应用程序。这个应用程序加载用Visual c++编译的dll。是否有一个调试器可以调试应用程序的这两个部分?目前我必须决定-要么我可以很容易地设置断点并在Visual Studio中查看源代码,要么我必须启动Borland c++,但我无法使用Visual Studio编译的dll中的源代码。

谢谢你的帮助,托拜厄斯

您可以尝试OllyDbg - version 1。x似乎不支持最新的Win版本,但也有2.0版本,尽管它仍处于alpha状态(我自己还没有尝试过那个版本)。

EDIT -澄清:

源调试 OllyDbg读取Borland和的调试信息微软格式。的源代码和名称函数、标签、全局变量和静态变量。动态支持(栈)变量和结构非常有限。

以上内容摘自这里

更新:

我不熟悉Borland c++ Builder,但是在这个链接中你可以找到一些解释如何处理Borland和MS之间的一些互操作性问题的文章,这些文章可能会有所帮助。

如果这两个部分都使用ulink链接器构建并有调试信息,您可以尝试cdb32调试器(来自ulink链接器作者)

cdb32仍处于alpha阶段,我个人从未尝试过这种"混合"调试

您是否尝试过在VS中加载DLL代码,在BCB中加载应用程序代码,并同时将两个调试器附加到同一运行过程?不确定Windows是否会允许,但也许值得一试。

我怀疑你的问题没有完美的答案,你将不得不以某种方式妥协,我相信你已经在这样做了。

我在工作中遇到了和你类似的问题。我工作的应用程序是用Python而不是Borland c++编写的,但像你的情况一样,这些应用程序依赖于一个相当大的Visual Studio编译的DLL来实现某些功能。

我调试这些应用程序的方法包括两种调试策略的组合:使用交互式调试器和所谓的"printf"调试技术。

我所做的基本上是选择两个区域中的一个作为我的主要调试焦点,这决定了我的调试方法:

  • 如果对于给定的情况,我决定我需要更详细地调试DLL,那么我使用VS调试器。我将可执行文件设置为在DLL项目中运行,作为我的python脚本,这样就可以对DLL代码进行全面调试。如果我需要Python端的调试支持,那么我添加print语句。如果我需要Python端的断点来检查某些值,我只需打印所有这些值,然后立即调用一个c++函数,该函数什么都不做,但在vs中设置了一个断点。

  • 当我需要更多地集中在Python方面时,我使用Python交互式调试器,但我有VS与DLL项目加载在一边,以便我可以快速添加任何必要的打印到DLL并重新编译,所以基本上与上述相反。

我知道这不是你期望的答案,但在我看来这是一个不错的解决方案。

看起来可以将c++ Builder生成的调试信息转换为WinDbg可以理解的格式(链接到讨论)。如果是这样,您可以使用它来调试应用程序的两个部分(我还没有尝试过)。

您可以将.map文件转换为Microsoft的调试文件格式http://code.google.com/p/map2dbg/

现在可以使用Windebug;还提到了一个转换为PDB格式的工具,因此您可以尝试vc++调试器