【问题标题】:Call arguments missing when debugging with ndk-gdb. Stack trace works使用 ndk-gdb 调试时缺少调用参数。堆栈跟踪工作
【发布时间】:2014-05-27 08:16:46
【问题描述】:

我正在尝试使用 ndk-gdb 在 Android 上调试本机代码,但结果好坏参半。

当调试器遇到断点时,我可以使用 'bt' 获得很好的堆栈跟踪。 输入 'info source' 时,ndk-gdb 告诉我我在其中打断点的文件是“使用 DWARF 2 调试格式编译”。

当我输入“info args”来获取函数参数值时,问题就出现了。 ndk-gdb 然后声明:“没有可用的符号表信息。”。

我们将不胜感激任何有关此问题原因的意见。

【问题讨论】:

  • 只是猜测,您在构建过程中是否使用了 -g 选项?
  • 执行 'objdump -W' 产生:' DW_AT_producer :(间接字符串,偏移量:0x12f6):GNU C 4.8 -mbionic -march=armv7-a -mfpu=vfpv3-d16 - mfloat-abi=softfp -mthumb -marm -mtls-dialect=gnu -g -Os -O0 -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -fno-省略帧指针'。
  • 我们找到了解决方案:使用 gcc 4.6 工具链有效,而 gcc 4.8 工具链产生了我们看到的问题。
  • 这也适用于我。不过仍然想使用 4.8。

标签: android c debugging android-ndk gdb


【解决方案1】:

奇怪的是它说文件是用 DWARF 2 格式编译的,因为你在那里提供的标志表明它只指定了 -g,它应该让 GCC 4.8 产生 DWARF 4 格式。这也与您看到的错误一致。添加标志-gdwarf-2,NDK 调试器(还不是 7.5 版)应该能够处理这些符号。

我从这个问题的一个答案中选择了这个:Debugging with gdb on a program with no optimization but still there is no symbol in the current context for local variables

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多