调试使用 mingw/msys2 构建的 Windows 服务

Posted

技术标签:

【中文标题】调试使用 mingw/msys2 构建的 Windows 服务【英文标题】:Debugging Windows service built with mingw/msys2 【发布时间】:2018-06-22 15:30:39 【问题描述】:

在使用 MSYS2 环境在 Windows 上使用 QT 和 Boost Logger 构建的 Windows 服务中调试崩溃的时间真是太棒了。当我在退出前停止程序时,真正的主要问题就出现了。该程序只是不成功地存在并抛出了这些坏男孩之一:

如果我在 gdb 中运行它,那可能是另一回事了。我在 windbg 中打开故障转储并获取一些信息,但由于未导出符号,因此它真的很神秘。

当我的程序(称为服务)调用日志时,我发现了一些问题。但我不能在这里做太多的地方或什么。我怎样才能得到有用的东西,以便最终解决这个问题?

非常感谢!

【问题讨论】:

我很想对不赞成票发表评论。我真的不是要你调试我的代码。我只是想学习如何自己做。如果我问的方式很糟糕,请告诉我! 【参考方案1】:

似乎最简单、最自然的方法是将 gdb 附加到正在运行的进程。我只是以管理员身份运行 msys2,然后运行命令

gdb service.exe -p [processID]

任务管理器给了我进程 ID。附加该过程后,我就使用了命令

continue

让它继续运行。然后我让它崩溃,gdb完美地给了我回溯。

我对此进行了一些搜索,这比尝试让 windbg 读取 g++ 生成的符号或读取汇编代码要简单得多。希望这可以帮助遇到同样问题的人。

参考资料:

How to attach a process in gdb

【讨论】:

以上是关于调试使用 mingw/msys2 构建的 Windows 服务的主要内容,如果未能解决你的问题,请参考以下文章

wind能帮忙加工数据吗

在构建 Qt-Static 5.3.2 时遇到问题

为啥 Visual Studio 不调试我的 VB.NET 应用程序?

[Wind - E262] 项目流程及注意事项

gdb调试命令

windbg符号加载和调试