【发布时间】:2017-02-17 16:38:18
【问题描述】:
我有一小段 Windows 代码,基本上是从 MSDN tutorial 复制的,但适用于 C++。我现在可以使用其中一种方法编译它:
i686-w64-mingw32-g++ -g hello.cpp -o hello生成本机 Windows PE32 可执行文件,wineg++ -g hello.cpp -o hello生成libwine包装对hello.exe+hello.exe.so。
我现在只想在调试器(gdb 或可能的接口)中启动文件,然后在入口点 WinMain 处停止。我在这方面很失败。我尝试过的(注意:在下文中,hello 不带扩展名是非常不合常规的 Windows 可执行文件):
wine /usr/i686-w64-mingw32/sys-root/mingw/bin/gdbserver.exe :2000 hello后跟target remote :2000在本地gdb中:根本找不到符号,所有内容都是??跨越 10 多个堆栈帧wine /usr/i686-w64-mingw32/sys-root/mingw/bin/gdb.exe hello:挂起,不接受任何用户在命令行输入gdb wine后跟run hello:Missing separate debuginfos, use: dnf debuginfo-install wine-core-1.9.19-1.fc24.i686,我这样做了,但错误仍然存在gdb hello.exe.so:导致 SIGSEGV修改
hello.exe脚本,使其设置正确的环境,但最终运行gdb:没有任何符号,??无处不在winedbg hello带和不带--gdb:到目前为止最远,从黑色控制台窗口开始,让我介入,但我的代码中的内容仍然是 @ 987654344@-ed 和WinMain(或包含该字符串的任何内容)未知winedbg hello.exe(wineg++的输出):程序完全加载,调试器挂起等待它,而它已经在后台运行在
winedbg中运行应用程序并附加到它:不符合目的(不允许我停在入口点),但在其他方面主要像最后两点一样工作(与输出一起使用MinGW的输出,但没有显示hello.exe的任何内部结构,完全不适用于wineg++的输出)。阅读大量官方和非官方教程、错误报告、SO 问题...
我什至不记得我尝试过的其他组合。肯定不会那么难吧?
【问题讨论】:
标签: debugging cross-compiling mingw32 wine