GDB 调试技巧
GDB 调试参考文章:
https://www.wenjiangs.com/docs/100-gdb-tips
通过 core dump 文件定位:
解压:gunzip core_sig11_pid338_TSB_TEST.gz
启动:gdb TSB_TEST
gdb) 输入 core /data/core_sig11_pid338_TSB_TEST
gdb) 输入 bt
gdb) 输入 disassemble
用 bt/where 出现 ??? 情况
用GDB bt/where 调试出现 0x00007fa348d5c4e6 in ?? () 情况
1. 原因有可能是没找到符号表。
可以用 info share 查看信息:
1 (gdb) info share 2 From To Syms Read Shared Object Library 3 0xb6f61270 0xb6f6fbac No /lib/libpthread.so.0 4 0xb6f47800 0xb6f4b074 No /lib/librt.so.1 5 0xb6f3394c 0xb6f347f8 No /lib/libdl.so.2 6 0xb6e5c3a0 0xb6f088ac No /lib/libstdc++.so.6
解决方法,cd到可执行文件目录下, 执行 “gdb -c core文件绝对路径” 按照上面步骤加载进入到 gdb 下。
进入gdb命令行, 执行 sharedlibrary 加载符号表,会看到很多done 之类的信息,再输入bt即能正确定位到错误点。
再用 info share 查看:
1 (gdb) info share 2 From To Syms Read Shared Object Library 3 0xb6f61270 0xb6f6fbac Yes (*) /lib/libpthread.so.0 4 0xb6f47800 0xb6f4b074 Yes (*) /lib/librt.so.1 5 0xb6f3394c 0xb6f347f8 Yes (*) /lib/libdl.so.2 6 0xb6e5c3a0 0xb6f088ac Yes (*) /lib/libstdc++.so.6
2. 有可能是没有加 -g 打开带 symbol
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
2018-01-18 Python及Pycharm安装详细教程