美文网首页
Linux gdbserver+gdb 调试

Linux gdbserver+gdb 调试

作者: cglmcu | 来源:发表于2019-03-21 12:18 被阅读0次

1、现在ubuntu上是设备相关工具链编译gdb工具,详见github编译方法:

https://github.com/cglmcu/embedded-devtools

编译需要注意设备工具链到PATH路径如下:

2、将在设备上跑起gdb 如下:

$ adb push edt-aarch64-linux-gnu.tar.gz /data/

$ tar zxvf dt-aarch64-linux-gnu.tar.gz

首先在设备上设置环境变量,

$ vi bashrc

alias ll='ls -al'

alias vim=vi

export PATH=/data/edt/bin:$PATH

 export LD_LIBRARY_PATH=/data/root-amlogic-trim/lib:/data/root-amlogic-trim/usr/lib

然后

$ source  bashrc

完成之后,开始调试应用程序,如设备上有个voipd的测试程序

$  cd /data/

$ gdbserver  :1234 voipd

2、在ubuntu上开始跑起gdb-multiarch

$ adb forward tcp:1234 tcp:1234

顾名思义,adb forward的功能是建立一个转发,adb forward tcp:1234 tcp:1234的意思是,将PC端的1234端口收到的数据,转发给到设备中1234端口。但是光执行这个命令还不能转发数据,还需要完成两个步骤才能传数据。这两个步骤是:

(a)在设备端,建立一个端口为1234的server,并打开server到监听状态。

(b)在PC端,建立一个socket client端,连接到端口为11111的server上。

$ gdb-multiarch

$ target remote :1234

$ set sysroot /root/root-amlogic-trim/    //设置远端调用库

$ info sharedlibrary 查看共享库符号链接

$ b main

$ c  即可以开始调试

启动GDB的方法有以下几种:

    1、gdb <program>

       program也就是你的执行文件,一般在当然目录下。

    2、gdb <program> core

       用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。

    3、gdb <program> <PID>

       如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试他。program应该在PATH环境变量中搜索得到。

GDB启动时,可以加上一些GDB的启动开关,详细的开关可以用gdb -help查看。我在下面只例举一些比较常用的参数:

    -symbols <file>

    -s <file>

    从指定文件中读取符号表。

    -se file

    从指定文件中读取符号表信息,并把他用在可执行文件中。

    -core <file>

    -c <file>

    调试时core dump的core文件。

    -directory <directory>

    -d <directory>

    加入一个源文件的搜索路径。默认搜索路径是环境变量中PATH所定义的路径

常见问题:

1.调试库是not strip的但是没有debug信息,也没法读取symbol

解决方法:make menuconfig 打开debug信息,如Compile packages with debugging info设置为*

2、源码调试,在gdb中directory 命令 指定源码进行调试

相关文章

  • Linux gdbserver+gdb 调试

    1、现在ubuntu上是设备相关工具链编译gdb工具,详见github编译方法: https://github.c...

  • python调试

    linux python调试技巧 Linux下Python基础调试 http://blog.163.com/liu...

  • gdbserver+gdb

    准备 目标机器需要运行程序和 gdbserver,宿主机器需要编译环境代码和 gdb 步骤 目标机器运行 gdbs...

  • linux编程入门(七)-使用gdb调试程序

    程序开发离不开调试,可以断点调试,也可以打log调试,linux下断点调试c,c++程序用gdb。 断点调试虽然很...

  • PWN入门到放弃

    Linux下的pwn常用到的工具有: gdb:Linux调试中必要用到的 gdb-peda:gdb方便调试的工具,...

  • 2018-09-18 Linux内核调试

    【Gooooood转】Linux内核调试方法总结

  • Linux程序调试方法汇总

    Linux下程序的调试方法汇总 在linux中讨论调试工具主要是为那些入门者提供一些帮助。调试工具能让我们能够监测...

  • Linux print system

    Linux print system linux中的调试方法有很多种,但我们最常用的也是最关键的调试工具应该就是使...

  • VS2017创建并调试LINUX程序

    原创,转载请申明宇宙第一IDE以前没办法用在linux程序先,现在不仅能在python上调试也能调试linux程序...

  • windows下使用vs studio调试Linux下代码

    linux下使用gdb调试c的代码,很不直观,也很不方便,如果能够在windows下的IDE下调试linux的c代...

网友评论

      本文标题:Linux gdbserver+gdb 调试

      本文链接:https://www.haomeiwen.com/subject/axcqvqtx.html