linux调试技术学习笔记
2015-04-26 20:08
477 查看
最近做到一个项目,其中有个视频传输的部分好卡,但是单独运行的时候木有问题,后来发现完整运行的时候,CPU占有率95%。。。。然后发现strace,gdb这个调试工具。
硬件平台:友善之臂tiny210
客户机:Ubuntu12.04
cd到strace的下载目录,在Ubuntu中输入命令
配置strace:输入命令
输入
输入
输入:
把test拷贝到目标系统中,ssh登录远程目标系统,cd到test所在文件夹。
输入:
系统调用的统计信息
此时输入arm-linux-gdb -v应该会看到版本信息。
生成的gdb服务器版本arm-linux-gdbserver会安装到目录gdb/gdbserver/bin中,把它下载到目标系统的/usr/binl目录下。
编译上面的程序,下载到目标系统。
输入如下命令:
客户机:
输入如下命令:
客户机端输入
目标系统运行情况
gdb更加详细的用法,请参考博客:用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调试程序,在此不再赘述。
相关文章推荐
- 视频: 千重浪Linux系统调试技术培训 03-04_Basic_GCC_and_EXT
- 掌握 Linux 调试技术
- 嵌入式Linux之Kernel(裁减移植)启动调试、打印技术 printascii(补充)、内核调试
- linux 调试技术
- Linux 调试技术
- 掌握 Linux 调试技术
- 掌握 Linux 调试技术(转自:CU)
- linux0.11学习笔记-技术铺垫-简单AB任务切换程序(3)-调试手段和方法
- 掌握 Linux 调试技术
- 视频: 千重浪Linux系统调试技术培训 03-05_Basic-ELF
- Linux设备驱动调试技术 3
- Linux下GDB远程调试技术
- 掌握 Linux 调试技术
- Linux调试技术
- linux 调试技术
- 调试技术: Linux core dump file
- 掌握 Linux 调试技术
- 【Linux调试技术】程序控制
- linux后端诊断与调试技术
- Linux调试技术介绍(编程开发)