代码调试工具
来源:互联网 发布:ubuntu查看剩余空间 编辑:程序博客网 时间:2024/06/13 23:43
链接地址:代码分析工具
我们在调试代码的时候,有时会遇到空指针的问题,这个可能是内核的,串口打印出了oops,也可能是Linux上层的,比如c的so库等,下面截取了一个这样的一个log,:
来分析一下几个命令的使用。这个是上层so库打印出来的堆栈信息,其他部分我也没有看懂 ,我们就关注一红色框的部分,在这里我们只是看到了出问题的库的名字和地址,还不清楚是具体哪个函数,具体哪一行代码出的问题,我们可以用arm-eabi-addr2line 这个命令。
该可执行程序在Android的工程代码中已经包含了,路径在linux/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin,使用方法:
./arm-eabi-addr2line -f -e libc.so 0000d630
打印出:
pthread_mutex_lock_impl
/home/android/disk/13005/linux/bionic/libc/bionic/pthread.c:1198
注意,这里的libc.so,是用out目录下的\symbols\system\lib 这个里面的库文件,这里面的库文件是带有符号的,才能输出更多的信息。我们可以依次去打印,他们分别是从下往上调用。这个主要是用来看看调用的流程,出现问题一般也没有这么容易分析。
第二个命令是反汇编的命令:arm-eabi-objdump。这里作为演示,我们把libsensor1.so反汇编看看,命令如下:
./arm-eabi-objdump -S -D libc.so > deassmble_libc.txt 反汇编下你的动态连接库文件,并且将它写入一个文件中,我们就可以根据堆栈打出的地址来找到对应的代码,我们截取一段来看:
34ce:f7ff ed38 前面表示地址,后面表示操作码,这里一共占据了4字节 34ce, 34cf, 34d0, 34d1,所有下一条指令就是34d2了。这个出问题的地方正是代码
pthread_mutex_lock( &libsensor_cli_data_mutex );
这个分析只是定位了代码,其实是不是这里引起很不一定,距离正在分析出问题的原因还很远。这里举例只是讲了这个命令的使用以及堆栈信息的查看。
未完待续。。。
- 代码调试工具
- Android代码调试工具--Findbugs
- Android代码调试工具 traceview
- JavaScript 代码调试工具js代码调试 在火狐浏览器中调试js代码
- 有效检查Java代码的工具:5款调试工具
- 掌握好写js代码相应的调试工具之——火狐调试工具-DevTools
- Mvc示例代码调试之一----调试工具及设置(用firebug与vs联合调试)
- Valgrind--Linux下的内存调试和代码解剖工具
- Linux 编程,调试,评测,代码静态检查,开发环境工具
- 示例:日志调试工具EurekaLog(检查代码Bug)
- Valgrind--Linux下的内存调试和代码解剖工具
- Android代码调试工具 traceview 和 dmtracedump的波折演绎
- Android代码调试工具 traceview 和 dmtracedump的波折演绎
- Android代码调试工具 traceview 和 dmtracedump的波折演绎
- Android代码调试工具 traceview 和 dmtracedump的波折演绎
- Android代码调试工具 traceview 和 dmtracedump的波折演绎 .
- Valgrind--Linux下的内存调试和代码解剖工具
- Windows上调试FAT文件系统代码工具一
- ffmpeg学习十四:转码
- POJ 1651:Multiplication Puzzle 区间dp
- mysql主从配置
- JVM虚拟机参数配置详解(官方文档)
- LintCode 133 最长单词
- 代码调试工具
- 奥巴马2017 年告别演讲
- My97DatePicker使用,日期限制范围
- WebService客户端——HttpClient调用WebService
- 日志组件slf4j介绍及配置详解
- 第一本书 第四章 课上练习 (子查询,in ,分页 ,exists)
- hibernate的类型问题
- 北京天宇联科技有限责任公司—智慧园区的发展
- 微信小程序快捷键