linux调试技术学习笔记

来源:互联网 发布:mac怎么放大图标 编辑:程序博客网 时间:2024/06/05 07:50

最近做到一个项目,其中有个视频传输的部分好卡,但是单独运行的时候木有问题,后来发现完整运行的时候,CPU占有率95%。。。。然后发现strace,gdb这个调试工具。

硬件平台:友善之臂tiny210
客户机:Ubuntu12.04

strace是什么

strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用及它所接收的系统信息。 ——— [维基百科]

strace安装

  1. 首先先下载strace。
  2. cd到strace的下载目录,在Ubuntu中输入命令tar xvf strace-4.10.tar.x’,解压到此文件夹。
  3. 配置strace:输入命令./configure --host=arm-linux --prefix=$PWD,host参数表示平台是arm,使用arm-linux-gcc编译。prefix参数表示安装目录,为源代码文件夹。
  4. 输入make编译。
  5. 输入make install安装,strace在bin目录下,把它拷贝到友善之臂文件系统目录/usr/bin中。

strace的使用

创建文件test.c:

#include <stdio.h>int main(){    int a = 1;    int b = 2;    int c = 3;    //scanf("%d", &a);    printf("%d\n", a);    printf("%d\n", b);    printf("%d\n", c);    return 0;}

输入:

arm-linux-gcc  -g test.c -o test

把test拷贝到目标系统中,ssh登录远程目标系统,cd到test所在文件夹。
输入:

strace ./test#能够查看每个系统调用的时间strace -T test #能够查看所有系统调用的统计信息strace -c test


系统调用的统计信息
系统调用的统计信息

gdb是什么

GNU侦错器(GNU Debugger,缩写:GDB),是GNU软件系统中的标准侦错器,此外GDB也是个具有移携性的侦错器,经过移携需求的调修与重新编译,如今许多的类UNIX操作系统上都可以使用GDB,而现有GDB所能支持除错的编程语言有C、C++、Pascal以及FORTRAN。 ——— [维基百科]

gdb安装

首先到官网下载gdb,笔者下载的版本为GDB7.6。

编译arm-linux-gdb

在客户机输入:

cd gdb-7.9./configure --target=arm-linux makemake install 

此时输入arm-linux-gdb -v应该会看到版本信息。

编译gdbserver

cd gdb/gdbserver./configure --target=arm-linux --host=arm-linux --prefix=$PWDmake CC=arm-linux-gcc make install

生成的gdb服务器版本arm-linux-gdbserver会安装到目录gdb/gdbserver/bin中,把它下载到目标系统的/usr/binl目录下。

gdb的使用

输入命令:

arm-linux-gcc -static -g test.c -o test

编译上面的程序,下载到目标系统。
输入如下命令:

arm-linux-gdbserver 192.168.1.103:1234 test#其中192.168.1.103为客户机的地址,1234为端口号

客户机:
输入如下命令:

#打开gdb,从test文件加载调试符号arm-linux-gdb test#file test#192.168.1.101位目标系统的iptarget remote  192.168.1.101:1234#从远程目标系统下载所需要的动态库#set solib-search-path ../arm_lib#set sysroot remote:/


客户机
客户机端输入c命令运行


目标系统
目标系统运行情况

gdb更加详细的用法,请参考博客:用GDB调试程序,在此不再赘述。

0 0
原创粉丝点击