【发布时间】:2011-06-25 14:22:04
【问题描述】:
谁能告诉我如何使用 gdb-mode 在 emacs 中运行 ndk-gdb?我目前在 shell 缓冲区中运行它。我想要的是一种在我中断或跨步时自动将源文件缓冲区与 gdb 中的当前 pc 同步的方法。更多的东西,比如从源设置中断、显示 gdb 本地的缓冲区等,以及 gdb 命令的快捷键都是肉汁。
背景:我在 2010 年 12 月 15 日的 GNU Emacs 23.1.90.1 (i386-apple-darwin10.5.0, NS apple-appkit-1038.35) 上使用 android-mode 在 OSX 10.6.6 上开发,使用 android- ndk-r5b 和用于 android 目标的混合 java/c/c++ 代码。
emacs 中的 Android 模式和 shell(运行 ndk-gdb)允许我查看我需要的几乎所有内容,但如果我可以获得源缓冲区以与调试器同步,或者获得等效的设置,我的设置会更方便EmacsWiki here 中描述的内容。
仅供参考,我目前正在使用 eclipse 进行 java 端调试和开发,但发现它不稳定且难以设置为原生工作,尽管有 sequoyah 可用,此外,eclipse 不是 emacs。
[附加]
使用 ndk-gdb 作为 gdb 命令运行 M-x gdb(见下文)会生成一个名为 gud 的缓冲区,其模式行显示为“(Debugger:run [initializing...])”。缓冲区不接受 gdb 命令,也不接受 emacs gdb 命令 - (M-s、M-n 等导致
输出:
当前目录是 /Users/jpschelter/ Android NDK安装路径:/Developer/android-ndk-r5b 使用特定的 adb 命令:/Developer/android-sdk-mac_x86/platform-tools/adb ... …… ... (未找到调试符号) 警告:无法找到动态链接器断点函数。 GDB 将无法调试共享库初始化程序 并跟踪显式加载的动态代码。 /Developer/Projects/ECS/DIGG/Projects/droid/obj/local/armeabi/libc.so 中的 nanosleep () 中的 0xafd0e21c (gdb) 未定义的命令:“1-inferior-tty-set”。试试“帮助”。 (gdb) 未定义的命令:“2-gdb-set”。试试“帮助”。 (gdb) 未定义的命令:“3-gdb-set”。试试“帮助”。 (gdb) 未定义的命令:“4-file-list-exec-source-files”。试试“帮助”。 (gdb) 未定义的命令:“5-file-list-exec-source-file”。试试“帮助”。 (gdb) 未定义的命令:“6-gdb-show”。试试“帮助”。 (gdb) 未定义的命令:“7-stack-info-frame”。试试“帮助”。 (gdb) 未定义的命令:“8 线程信息”。试试“帮助”。 (gdb) 未定义的命令:“9-break-list”。试试“帮助”。还创建了名为 *threads of*、*input/output of* 和 *breakpoints of* 的缓冲区,但它们是空的。
浏览我的 emacs 的 gdb-mi.el 源,并与 gdb-debug-log 输出进行比较,看起来 gdb-mi 正在尝试将这些参数发送到 gdb 可执行文件,但 gdb-server 没有按预期响应命令?
请注意,使用 ndk-gdb 的命令行运行 Mx gud-gdb 似乎相当于在 shell 中运行 ndk-gdb,因此问题似乎在 emacs 中的 gdb-mode 配置中。
【问题讨论】:
-
所以我在这里的解释是 ndk-gdb 可以正确运行,但是 emacs 的 gdb-mode 正在解释命令并且无法与 gdb-server,这是调试连接的主机端。
标签: android emacs gdb android-ndk