linux调试技术学习笔记
来源:互联网 发布:mac怎么放大图标 编辑:程序博客网 时间:2024/06/05 07:50
最近做到一个项目,其中有个视频传输的部分好卡,但是单独运行的时候木有问题,后来发现完整运行的时候,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 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
- linux调试技术学习笔记
- ldd3学习笔记:调试技术
- linux学习笔记-读《Linux编程技术详解》(3)-GDB调试
- LDD3学习笔记(7):调试技术
- 《软件调试分析技术》学习笔记
- 《软件调试分析技术》学习笔记
- 《LINUX设备驱动程序》第4章(调试技术)学习笔记
- 学习笔记 --- LINUX 驱动调试之printk
- Linux命令学习笔记(更新:shell调试)
- linux环境gdb调试工具学习笔记
- linux调试程序利器 GDB学习笔记
- Linux学习笔记25 --系统恢复技术
- 掌握 Linux 调试技术
- 掌握 Linux 调试技术
- 掌握 Linux 调试技术
- 掌握 Linux 调试技术
- Linux调试技术介绍
- 掌握 Linux 调试技术
- 15第八周项目一——实现复数类中的运算符重载(友元函数)
- 基于优龙FS2410开发板u-boot-1.1.6的移植(NAND FLASH) (二)
- hdu1274
- JAVA Observer
- Python列表操作
- linux调试技术学习笔记
- VS2012下面使用vc++6.0的项目的出错问题
- SQL注入片段
- 线程和进程的区别
- Java泛型通配符解决了泛型的许多诟病(如不能重载)
- 基于优龙FS2410开发板u-boot-1.1.6的移植(NAND FLASH) (三)
- 关于Servlet线程安全问题
- C++第四章
- cout格式化输出