应用调试_strace和gdb

发布时间 2023-09-06 15:59:03作者: charlie12345

strace

(1)先下载压缩包文件,解压编译生成一个strace可执行文件,并拷贝到开发板上
(2)strace的用法:可以用来解决一些简单的问题
	1)strace -o log.txt ./firstdrvtest on				//将追踪结果存入log.txt中

(3)strace原理:
	starce -o log.txt  APP			//其中starce是父进程,APP是子进程
		1)strace
		2)APP子进程(open/read/write) ===> swi #val ===> swi异常 ===> vector_swi
		3)vector_swi:
			1、先判断是否stracing
			2、若是,发信号给父进程
			3、父进程处理后(比如记录),让子进程继续运行
	

GDB调试

编译gdb,gdbserver
	tar xjf gdb-7.4.tar.bz2
	cd gdb-7.4/
	./configure --target=arm-linux
	make
	make install 					 			//可能需要指定目录prefix
	把arm-linux-gdb复制到/bin目录

	cd gdb/gdbserver/
	./configure --host=arm-linux
	make 										//可能会报错,需解决
	cp gdbserver /work/nfs_root/first_fs/bin

编译要调试的应用,编译时加上-g选项

调试:
	1. 在ARM板上		(gdbserver是APP的父进程)
		gdbserver 192.168.1.17:2345 ./test_debug 					(开发板ip,端口随意)

	2. 在PC上			(gdb需要带有调试信息的在ARM上运行的APP文件)
		/bin/arm-linux-gdb ./test_debug								(进入gdb调试界面)
		输入:target remote 192.168.1.17:2345						(建立连接,注意端口)
		然后: 使用gdb命令来控制程序


另一种方法:
	让程序在开发板上直接运行,当它发生错误时,令它产生core dump文件
	然后使用gdb根据core dump文件找到发生错误的地方
	
	在ARM板上:
		1. ulimit -c unlimited											(设置为不限制)
		2. 执行应用程序 : 程序出错时会在当前目录下生成名为core的文件,拷贝到PC上
	在PC上:
		3. /bin/arm-linux-gdb ./test_debug ./core 						(进入gdb调试界面)
			可查看到相关错误信息
			输入"bt",可查看到调用关系

参考:韦东山Linux教程