【问题标题】:Debugging a Delphi app on Wine在 Wine 上调试 Delphi 应用程序
【发布时间】:2011-01-02 05:38:42
【问题描述】:

我有一个 Delphi Windows 应用程序在 Wine 下可怕地死掉了 - 甚至无法创建主窗体。由于各种原因,移植到 Free Pascal 不是一种选择。

我可以在 Wine 下使用 Delphi 的原生方式进行调试吗?如果没有,我可以在 Wine 下使用 gdb 进行调试吗?如果可以,如何将 Delphi 格式的调试信息(可能是 Turbo Debugger)提供给 gdb?

最后,如何从程序中检测 Wine? Wine 常见问题解答说我不应该这样做,但我认为修复我的应用程序在 Wine 人的优先事项列表中并不高,所以我宁愿自己动手。

我没有编写应用程序,但我有源代码和 Delphi 的副本。

【问题讨论】:

    标签: delphi debugging wine


    【解决方案1】:

    我相信您应该能够使用 gdb 进行调试,但我不知道您将如何将所有 Delphi 源代码提供给它。您需要在 EXE(包括外部调试器)中包含所有调试信息才能开始使用。

    我建议您获取支持通过 TCP/IP 进行日志记录的日志记录实用程序。两个不错的是SmartInspectCodeSite。将它们与JCL 提供的堆栈跟踪实用程序相结合,您可能会发现它是一个比附加调试器更好的解决方案。

    祝你好运检测 Wine。我很想知道你想出了什么。不过好像应该是可以的。

    【讨论】:

      【解决方案2】:

      可能能够让远程调试器连接到 Wine 应用程序(从未尝试过),但这对 Wine 的要求很高。

      我会尝试的第一件事是使用堆栈跟踪实用程序,例如 JCL 调试扩展。堆栈跟踪可能会为您提供足够的信息来解决问题,而无需在 Linux 下进行调试。

      【讨论】:

      • 这与过去基于 printf() 的调试没有什么不同 :) 我承认这是一种选择。只是不愉快。
      • 作为调试工具,是的。作为一种从客户或其他难以重现的案例中获取验尸结果的方式,它是无价的。
      • 现在我的野心更加谦虚 - 让该死的东西开始并显示主窗口就足够了。 :) 该应用程序是免费软件,因此严格的客户支持不在我的议程上。不过感谢您的链接。
      【解决方案3】:

      如果您有源代码,则重新编译并包含一堆调试消息,并尝试像在 Windows 上那样运行它。

      Wine 有很多未实现的 API,您可能会幸运地使用 winetricks 随机安装额外的包。

      我在我们的 Delphi 应用程序中使用 wine 时遇到了类似的问题,我需要安装 ODBC 管理器,默认情况下它不会出现,然后我才能让它工作。

      【讨论】:

      • 哦,我看了你的评论,你不是太热衷于 printf 调试,哦,好吧。可能只有 1 或 2 件事会阻止您的软件初始化,所以这可能是值得的。
      • 好吧,如果没有更好的选择,那么 printf() 就是。我只是希望 StackOverflow 的集体智慧有更好的解决方案。
      猜你喜欢
      • 2020-07-14
      • 2010-10-27
      • 1970-01-01
      • 2011-12-11
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 2014-06-01
      相关资源
      最近更新 更多