【发布时间】:2015-02-18 07:19:34
【问题描述】:
我正在使用 Eclipse CDT 在 Mac OS X 上构建一个插件,该插件通过 libwebsockets 将一些数据流式传输到浏览器 websocket 连接。编译过程运行良好,我能够在 X-Plane 中运行我的插件,并按预期在 Google Chrome 中看到数据。
我想用 GDB 设置调试,但我已经拖了大约一个星期了,但没有任何成功。我在 Eclipse CDT 中创建了一个启动配置来附加到应用程序,但是每次应该启动调试会话时,我都会在 Eclipse 调试透视图中得到以下信息:
当启动Debug时,Eclipse会弹出一个正在运行的进程列表,我选择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."
关闭后:CDT中的“Non-stop mode”,得到如下:
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 可执行文件进行代码设计。
【问题讨论】:
标签: c debugging gdb eclipse-cdt