无法将 GDB 附加到 Eclipse 中的进程 CDT
Unable to attach GDB to process from Eclipse CDT
我正在使用 Eclipse CDT 在 Mac OS X 上构建一个插件,它通过 libwebsockets 将一些数据流式传输到浏览器 websocket 连接。编译过程工作正常,我能够 运行 我在 X-Plane 中的插件,并按预期看到 Google Chrome 上的数据。
我想用 GDB 设置调试,但我已经苦苦思索了大约一个星期,但没有任何成功。我在 Eclipse CDT 中创建了一个启动配置 Attach to Application,但每次调试会话应该启动时,我只是在 Eclipse 调试透视图中得到以下内容:
启动 Debug 时,Eclipse 向我显示 运行ning 进程的弹出列表,我 select X-Plane,但启动时,它仅显示线程已挂起。
我已经设置启动配置如下:
作为替代方案,我尝试使用 makefile 设置项目,可在此处查看:
https://gist.github.com/josefvanniekerk/690ad22160789c724490
来自 Eclipse CDT 的 gcc 和链接器调用如下所示:
Building file: ../src/XPWebSocket.c
Invoking: GCC C Compiler
gcc -DAPL=1 -DIBM=0 -DLIN=0 -DXPLM210 -I../lib/xpsdk_v213/CHeaders/XPLM -I../lib/libwebsockets/lib -O3 -g3 -Wall -c -fmessage-length=0 -fvisibility=hidden -MMD -MP -MF"src/XPWebSocket.d" -MT"src/XPWebSocket.d" -o "src/XPWebSocket.o" "../src/XPWebSocket.c"
Finished building: ../src/XPWebSocket.c
Building target: xpwebsocket.xpl
Invoking: MacOS X C Linker
gcc -L../lib/libwebsockets/build/lib -F/{...omitted...}/Projects/xplane/XPWebSocketLib/lib/xpsdk_v213/Libraries/Mac -framework XPLM -shared -o "xpwebsocket.xpl" ./src/XPWebSocket.o -lwebsockets
Finished building target: xpwebsocket.xpl
我已经双重确定我已经通过了 -g 选项来启用调试,但我就是无法让它工作。
我尝试将 C/C++ 应用程序指向 /Applications/X-Plane/X-Plane.app/Contents/MacOS/X-Plane,将其更改为 Debug/xpwebsocket.xpl,尝试将其指向 .xpl X-Plane Resources/Plugins 文件夹中的文件,坦率地说,我不知道我应该怎么做才能让调试与 X-Plane + GDB 一起工作。
我已经开始阅读有关尝试从命令行建立 GDB 调试会话的内容,也许如果我理解该过程,我就可以让 Eclipse 工作。但是谁知道要读多少天呢。
谁能给点建议?
更多信息,Eclipse CDT 中的 GDB 跟踪显示以下内容(仅错误位):
033,165 &".gdbinit: No such file or directory.\n"
033,165 13^error,msg=".gdbinit: No such file or directory."
037,222 19-target-attach --thread-group i1 197&
037,223 19^error,msg="Asynchronous execution not supported on this target."
关闭后:"Non-stop mode" in CDT,得到如下:
527,581 18^error,msg="Unable to find Mach task port for process-id 197: (os/kern) failure (0x5).\n (\
please check gdb is codesigned - see taskgated(8))"
猜测我需要对 X-Plane 可执行文件进行代码签名。
我通过使用以下指南签署 gdb 来解决这个问题:
http://ntraft.com/installing-gdb-on-os-x-mavericks/
但是,修复以上问题仅表明 Yosemite 上的 GDB 可能存在很多错误。
我正在使用 Eclipse CDT 在 Mac OS X 上构建一个插件,它通过 libwebsockets 将一些数据流式传输到浏览器 websocket 连接。编译过程工作正常,我能够 运行 我在 X-Plane 中的插件,并按预期看到 Google Chrome 上的数据。
我想用 GDB 设置调试,但我已经苦苦思索了大约一个星期,但没有任何成功。我在 Eclipse CDT 中创建了一个启动配置 Attach to Application,但每次调试会话应该启动时,我只是在 Eclipse 调试透视图中得到以下内容:
启动 Debug 时,Eclipse 向我显示 运行ning 进程的弹出列表,我 select X-Plane,但启动时,它仅显示线程已挂起。
我已经设置启动配置如下:
作为替代方案,我尝试使用 makefile 设置项目,可在此处查看:
https://gist.github.com/josefvanniekerk/690ad22160789c724490
来自 Eclipse CDT 的 gcc 和链接器调用如下所示:
Building file: ../src/XPWebSocket.c
Invoking: GCC C Compiler
gcc -DAPL=1 -DIBM=0 -DLIN=0 -DXPLM210 -I../lib/xpsdk_v213/CHeaders/XPLM -I../lib/libwebsockets/lib -O3 -g3 -Wall -c -fmessage-length=0 -fvisibility=hidden -MMD -MP -MF"src/XPWebSocket.d" -MT"src/XPWebSocket.d" -o "src/XPWebSocket.o" "../src/XPWebSocket.c"
Finished building: ../src/XPWebSocket.c
Building target: xpwebsocket.xpl
Invoking: MacOS X C Linker
gcc -L../lib/libwebsockets/build/lib -F/{...omitted...}/Projects/xplane/XPWebSocketLib/lib/xpsdk_v213/Libraries/Mac -framework XPLM -shared -o "xpwebsocket.xpl" ./src/XPWebSocket.o -lwebsockets
Finished building target: xpwebsocket.xpl
我已经双重确定我已经通过了 -g 选项来启用调试,但我就是无法让它工作。
我尝试将 C/C++ 应用程序指向 /Applications/X-Plane/X-Plane.app/Contents/MacOS/X-Plane,将其更改为 Debug/xpwebsocket.xpl,尝试将其指向 .xpl X-Plane Resources/Plugins 文件夹中的文件,坦率地说,我不知道我应该怎么做才能让调试与 X-Plane + GDB 一起工作。
我已经开始阅读有关尝试从命令行建立 GDB 调试会话的内容,也许如果我理解该过程,我就可以让 Eclipse 工作。但是谁知道要读多少天呢。
谁能给点建议?
更多信息,Eclipse CDT 中的 GDB 跟踪显示以下内容(仅错误位):
033,165 &".gdbinit: No such file or directory.\n"
033,165 13^error,msg=".gdbinit: No such file or directory."
037,222 19-target-attach --thread-group i1 197&
037,223 19^error,msg="Asynchronous execution not supported on this target."
关闭后:"Non-stop mode" in CDT,得到如下:
527,581 18^error,msg="Unable to find Mach task port for process-id 197: (os/kern) failure (0x5).\n (\
please check gdb is codesigned - see taskgated(8))"
猜测我需要对 X-Plane 可执行文件进行代码签名。
我通过使用以下指南签署 gdb 来解决这个问题:
http://ntraft.com/installing-gdb-on-os-x-mavericks/
但是,修复以上问题仅表明 Yosemite 上的 GDB 可能存在很多错误。