您的位置:首页 > 运维架构 > Linux

linux调试技术学习笔记

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

硬件平台:友善之臂tiny210

客户机:Ubuntu12.04

strace是什么

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

strace安装

首先先下载strace

cd到strace的下载目录,在Ubuntu中输入命令
tar xvf strace-4.10.tar
.x’,解压到此文件夹。

配置strace:输入命令
./configure --host=arm-linux --prefix=$PWD
,host参数表示平台是arm,使用arm-linux-gcc编译。prefix参数表示安装目录,为源代码文件夹。

输入
make
编译。

输入
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
make
make install


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

编译gdbserver

cd gdb/gdbserver
./configure --target=arm-linux --host=arm-linux --prefix=$PWD
make 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位目标系统的ip
target remote  192.168.1.101:1234
#从远程目标系统下载所需要的动态库
#set solib-search-path ../arm_lib
#set sysroot remote:/




客户机端输入
c
命令运行



目标系统运行情况

gdb更加详细的用法,请参考博客:用GDB调试程序,在此不再赘述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: