堆栈跟踪中没有函数名称,GDB,但出现在LLDB中
我正在尝试测试一个Vector类的实现,并试图使用GDB来查看错误发生的位置。堆栈跟踪中没有函数名称,GDB,但出现在LLDB中
当我用下面gcc -ggdb Vector.c TestVector.c
编译,并随后在GDB运行它,我得到以下作为输出(崩溃和试图打印堆栈跟踪后):
| => gdb ./a.out Reading symbols from ./a.out...Reading symbols from /Users/prog/Desktop/Generics/a.out.dSYM/Contents/Resources/DWARF/a.out...done.
done.
(gdb) r
Starting program: /Users/prog/Desktop/Generics/a.out
[New Thread 0x2703 of process 56984]
warning: unhandled dyld version (15)
Thread 2 received signal SIGSEGV, Segmentation fault.
0x00007fff65d97fe6 in ??()
(gdb) bt
#0 0x00007fff65d97fe6 in ??()
#1 0x00007ffeefbff640 in ??()
#2 0x00007fff65be4139 in ??()
#3 0x00007ffeefbff660 in ??()
#4 0x0000000000000000 in ??()
没有特别有助于确定错误是由于回溯导致的,只显示函数执行的绝对内存位置。
当我在LLDB执行相同的任务,输出的是一个有点清晰:
我的问题是,为什么GDB不给我准确的信息和LLDB做(尽管我不改变之间的编译设置两个调试会话),以及如何解决这个问题?
如果有任何帮助,我使用Mac OS X,High Sierra作为我的操作系统。
回答:
您正在使用的gdb无法识别由dyld加载到进程中的共享库。注意你的gdb输出的顶部,它说“未处理的dyld版本(15)”。它看起来像你使用的gdb需要更新才能在macOS上正常工作。我不知道现在如何主动维护gdb的macOS端口。
以上是 堆栈跟踪中没有函数名称,GDB,但出现在LLDB中 的全部内容, 来源链接: utcz.com/qa/260446.html