GDB CoreFile不查看功能参数
gdb corefile not see function parameters
我的应用程序由于未知的例外而崩溃(我的C 代码在某些条件下抛出了无人例外)。我正在尝试将Corefile GDB。二进制图书馆是"不条纹的"。并且堆栈跟踪显示了抛出未被发现的异常的功能(我的代码),但是当我尝试打印函数参数时,我总是"在当前上下文中没有符号xxx"。信息args还返回"无符号表信息"。
任何人都可以阐明为什么?是由于未被发现的例外情况而放松/破坏了堆栈吗?
谢谢弗兰克
您的二进制缺乏调试信息。
如果您使用gcc
构建它,并且想要调试您已经拥有的core
(例如,如果很难重现崩溃),则您可以通过使用重建二进制恰好相同的源和命令行,将-g
添加到编译和链接命令中。(注意:您必须使用相同的编译线;用-g
替换-O2
不会。)
如果崩溃不难复制,只需使用-g -O0
重建二进制文件,在GDB下运行并享受"简单"调试。
二进制图书馆是"不裁员"。
这并不意味着您认为这意味着什么。未剥离意味着符号表仍存在于二进制中。
GDB将读取此符号表,并使用它将地址范围映射到功能名称。
但是,要恢复本地变量和参数的名称和值,您必须使用调试信息来编译(这是-g
Flag对大多数编译器所做的)。
相关文章:
- 如何在C++中调用默认模板功能参数?
- 为什么指定数据类型而不是构造功能参数?C
- 为什么在相同大小的功能参数中隐式转换不会发出警告
- 无全局变量或功能参数的递归调用
- 将功能参数添加到向量
- 使用ENABLE_IF和SFINAE时,功能参数类型扣除(std容器,例如向量)失败
- C 功能参数中的返回参数
- 将std ::字符串移至功能参数
- 可以在功能参数列表中多次使用函数模板的模板参数名称
- C 元组类型用于功能参数类型
- 功能参数包
- 我可以使用模板功能参数C 更改模板类型
- 为了支持移动语义,应通过unique_ptr,值或rvalue获取功能参数
- 创建模板函数以使用该功能参数调用其他函数
- C 功能参数扩展了多个类
- GDB CoreFile不查看功能参数
- 功能参数导致堆栈溢出
- C 在功能参数中指向基类指针的指针
- 功能参数转换为儿童类C
- 功能参数与函数调用不匹配