调试使用 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 服务的主要内容,如果未能解决你的问题,请参考以下文章