远程调试步骤

在Android设备上启动gdbserver并attach你想调试的进程,并指定监听调试命令的端口(此端口是TV上的端口)

$ adb shell

# ps |grep media  #查看要调试进程的PID,以mediaserver进程为例

# gdbserver :1234 --attach 96   #:1234是端口号,96 是进程ID

如果设备上没有gdbserver,可以由google ndk中获取,在ndk的如下目录可以找到这个文件:

android-ndk-r8/toolchains/arm-linux-androideabi-4.9/prebuilt/android-arm

可以将此文件先推送到设备上。

进入源码服务器,比如5520编译服务器地址10.9.44.42

进入到源码工程目录下,进行环境配置,执行build文件夹下的envsetup.sh和choosecombo xx xx xx 命令,这时就可以使用gdbclient了。

adb connect 电视,成功后执行端口映射,将pc机的1234端口映射到电视1234端口

$ adb forward tcp:1234 tcp:1234   #端口映射,将pc机的1234端口映射到电视的1234端口

$ 在pc端的源码根目录下,执行 gdbclient -e mediaserver -p 1234 #从1234端口调试mediaserver

$ target remote:1234

接下来通过file命令来加载将要调试的可执行文件,对于android application来说,均为 out/target/product/generic/symbols/system/bin/app_process 这个文件,及设置搜索solib的搜索路径。

$file /home/luckychou/share/workspace/MT5520_DEV_Q3/release/android/l-pdk/out/target/product/mt5520_ll/symbols/system/bin/app_process32

$ set solib-search-path /home/luckychou/share/workspace/MT5520_DEV_Q3/release/android/l-pdk/out/target/product/mt5520_ll/symbols/system/lib

$ set solib-absolute-prefix /home/luckychou/share/workspace/MT5520_DEV_Q3/release/android/l-pdk/out/target/product/mt5520_ll/symbols/system/lib

之后,即可如调试PC端的C/C++ code一样,下断点,执行,查看内存内容,查看back trace等,来进行对library的debug工作:

If the program you’re backtracing is multi-threaded, you might want to get a backtrace for all threads:

(gdb) thread apply all bt

Another thing which is quite helpful to report is what variables were set locally at each point in the stack:

(gdb) bt full

You might want to report the output of the combination of the preceding options:

(gdb) thread apply all bt full

And if this is too much irrelevant output, you might want to keep only a few calls, such as the top 10:

(gdb) thread apply all bt full 10

If you have a large backtrace, you can log gdb output to a file (the default is gdb.txt):

(gdb) set logging on

(gdb) set logging file myfile.txt

还有很多其他gdb有用的命令,可以参考下网上的。

GDB + gdbserver 远程调试mediaserver进程的更多相关文章

  1. GDB + gdbserver 远程调试android native code

    原文地址:GDB + gdbserver 远程调试android native code 作者:tq08g2z 以调试模拟器中的native library code为例. Host: ubuntuT ...

  2. gdbserver远程调试嵌入式linux应用程序方法

    此处所讲的是基于gdb和gdbsever的远程调试方法.环境为:PC机:win7.虚拟机:10.04.下位机:飞嵌TE2440开发板. 嵌入式linux应用程序的开发一般都是在linux里面编写好代码 ...

  3. 使用gdbserver远程调试

    使用gdbserver远程调试   1.默认crosstool交叉编译器没有自带gdbserver,需要自行编译 到GNU官方FTP下载,目前最新版的是gdb-6.7.1下载地址:http://ftp ...

  4. gdb 远程调试android进程 -转

    什么是gdb 它是gnu组织开发的一个强大的unix程序调试工具,我们可以用它来调试Android上的C.C++代码. 它主要可以做4件事情: 随心所欲地启动你的程序. 设置断点,程序执行到断点处会停 ...

  5. gdb 远程调试android进程

    原文:http://blog.csdn.net/xinfuqizao/article/details/7955346?utm_source=tuicool 什么是gdb 它是gnu组织开发的一个强大的 ...

  6. gdbserver 远程调试问题:设置文件和so搜索路径

    编写一个必定crash 的程序 #include <stdio.h> void crash(){ char *a=0; *a=0; } int main() { printf(" ...

  7. vc远程调试启动进程(非attach)

    被调试端设置同attach进程方式的远程调试 代码端,需要在[Project] [Properties] [Configuration Properties] [Debugging].将Debugge ...

  8. 在海思芯片上使用GDB远程调试

    1 前言 使用海思平台上(编译工具链:arm-himix200-linux)交叉编译 GDB 工具(使用版本8.2,之前用过10.2的版本,在编译 gdbserver 遇到编译出错的问题,因为关联了其 ...

  9. GDB+GDBServer调试Linux应用程序

    参考:http://blog.csdn.net/shanghaiqianlun/article/details/7820401 一.gdb+gdbserver总体介绍 远程调试环境由宿主机GDB和目标 ...

随机推荐

  1. Context3D的setProgramConstantsFromMatrix使用时需注意的事项

    setProgramConstantsFromMatrix() public function setProgramConstantsFromMatrix(programType:String, fi ...

  2. Ubuntu 16.04/CentOS 6.9安装Apache压力(并发)测试工具ab

    说明: ab工具已经在Apache中包含,如果不想安装Apache,那么可以使用下面方法单独安装. 安装: Ubuntu: sudo apt-get install apache2-utils Cen ...

  3. java实现点选汉字验证码(自己修改后的)

    参考:http://blog.csdn.net/qq_26680031/article/details/51168527 package com.rd.p2p.web; import java.awt ...

  4. ADOX创建ACCESS数据库列名的数据类型

    Type   属性             指示   Parameter.Field   或   Property   对象的操作类型或数据类型. 设置和返回值 设置或返回下列   DataTypeE ...

  5. virtualenv 环境安装

      # Python 2.7.6:wget http://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xztar xf Python-2.7.6.tar. ...

  6. 机器学习算法实践:朴素贝叶斯 (Naive Bayes)(转载)

    前言 上一篇<机器学习算法实践:决策树 (Decision Tree)>总结了决策树的实现,本文中我将一步步实现一个朴素贝叶斯分类器,并采用SMS垃圾短信语料库中的数据进行模型训练,对垃圾 ...

  7. 【Hadoop】Hadoop MR 性能优化 Combiner机制

    1.概念 2.参考资料 提高hadoop的mapreduce job效率笔记之二(尽量的用Combiner) :http://sishuo(k).com/forum/blogPost/list/582 ...

  8. linux中grep命令

    grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. grep常用用法 [root@www ~]# grep [-acinv] [--color=auto] '搜寻字 ...

  9. mpush 服务端配置 for windows 服务自动运行

    mpush 服务端配置 以下安装部分是参照官方的步骤, 一.安装jdk1.8并配置环境变量 示例:  http://www.cnblogs.com/endv/p/6439860.html 二.Wind ...

  10. EffectiveJava(2)应对多个构造函数应当使用构建器

    ** 应对多个构造函数应当使用构建器 ** 静态工厂和构造器都不能很好的扩展到大量的可选参数,遇到大量参数有大量可选域时,只能重复生成可选参数递增的构造方法,这种构造模式叫做重叠构造器模式 javaB ...