当进程崩溃出现coredump提示时,可以利用gdb来定位出错函数。

首先,把core_dump.XXX.gz文件从设备上拷贝出来,放到编译环境下,另外,还要把代码目录下的symbols文件夹也拷贝到编译环境下,因为程序用到很多库,很多时候出错是在库函数里,所以一定要拷贝当前编译时产生的symbols文件夹,android一般在out/target/product/下,Supernova一般在projects/目录下。

先解压core_dump.XXX.gz文件,然后用gbd命令调试它,如下命令:

/opt/toolchain/mstar/arm-2012.09/bin/arm-none-linux-gnueabi-gdb -core core_dump.1029/Coredump.gz

/opt/toolchain/mstar/arm-2012.09/bin/arm-none-linux-gnueabi-gdb就是刚才找到的命令工具,-c或-core是指调试core文件,后面是文件路径。回车后,弹出的命令行(gdb)就是调试命令行了。

(gdb) backtrace命令是查看当前线程函数栈回溯,简写是bt。

如果bt后都是问号,看不到函数名,说明运行到动态库里出错了。

用file命令载入调试的文件,假如提示是由/applications/bin/tvos产生的core,就载入这个二进制文件,这个文件也就在symbols/applications/bin/下。

还要载入库文件,可以用set sysroot、set solib-absolute-prefix、set solib-search-path来指定库搜索路径,set sysroot是set solib-absolute-prefix 的别名,set solib-absolute-prefix设置库的绝对路径前缀,而solib-search-path设置库的搜索路径,对绝对路径和相对路径均起作用。

设置好后,再backtrace,就可以看到具体出错的函数在哪儿了,可以定位到具体行数,这时去查代码就行了。

若是遇到multithread mutex/semaphore deadlock问题,可以输入”thread apply all bt”, 一次查看所有threads的backtrace.

最新文章

  1. Failed deleting my ephemeral node
  2. C# redis使用之ServiceStack
  3. [Cordova] 无法显示Alert视窗
  4. 解决jquery $符号的冲突
  5. Gender, Genre, and Writing Style in Formal Written Texts
  6. Bluetooth GAP介绍
  7. java:内部类与外部类的区别和联系
  8. SecureCRT使用教程
  9. php入门微理解
  10. 在 AngularJS 中将 XML 转换为 JSON
  11. UI 增加文本
  12. m_sequencer、p_sequencer
  13. c# 界面自适应大小
  14. C#反射的一些经验[转载]
  15. vue--简单数据绑定
  16. js和php计算图片自适应宽高算法实现
  17. Can you solve this equation?---hdu2199(二分)
  18. BZOJ4034_树上操作_KEY
  19. 第4章-Vue.js 交互及实例的生命周期
  20. 【转帖】云平台发现服务构建:为什么不使用ZooKeeper

热门文章

  1. Java 之 List 接口
  2. Qt 使用QLabel、QMovie加载gif图片实现动态等待窗口
  3. 模块化规范:AMD规范和CommonJs规范
  4. Ubuntu下 安卓 adb 命令报:“insufficient permissions for device: user in plugdev group; ”问题的解决办法
  5. Pycharm安装模块提示module 'pip' has no attribute 'main'的问题
  6. centos 服务器 nginx 负载均衡服务安装
  7. 在ubuntu系统中,遇到 “由于/bin 不在PATH 环境变量中,故无法找到该命令”问题
  8. redis windows下载地址
  9. 纯数据结构Java实现(10/11)(2-3树&红黑树)
  10. python 监听键盘输入