赞
踩
GDB调试
概要
coredump是linux原生的概念,目前有很多工具可以支持coredump调试。其中gdb/trace32都可以支持。
coredump包含进程空间的内存,如果在加上含有调试信息的lib/程序,那么可以还原出当时异常的场景,这时你可以查看寄存器内容,调用栈,变量和内存等等。这对分析问题非常有帮助。
下面我们会一一介绍gdb和trace32如何调试coredump。
1. gdb (GNU debugger)
(1). 概述
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具
官网: http://www.gnu.org/software/gdb/ (可以下载到工具和文档)
(2). 功能
启动或连接程序,可以按照你的自定义的要求随心所欲的运行程序。
可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)。
当程序被停住时,可以检查此时你的程序中所发生的事。
动态的改变你程序的执行环境。
(3). 调试方法
在线调试(需要在eng build版本)
1. 可以用gdb直接启动一个程序调试。
2. 对一个已经运行的程序用gdb attach调试。
离线调试(借助coredump)
就是本章节的重点。
(4). 工具来源
Android NDK: http://developer.android.com/sdk/ndk/index.html。
在ndk安装目录下的toolchains/arm-linux-androideabit-$version/prebuilts/linux-x86/bin/arm-linux-androideabi-gdb
另外还可以从codebase里找到,在alps/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-$version/bin/arm-linux-androideabi-gdb
【注意】不要使用PC预装的gdb,android有对gdb做修改。
2. 离线调试
gdb离线调试coredump,一定要有这个程序的symbols文件才行。你可以这样启动gdb:
arm-linux-androideabi-gdb <program> PROCESS_COREDUMP
gdb有一些启动参数可以配置:
-symbols <f
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。