搭建交叉调试环境的方法如下: 1.打开内核配置文件,去掉“#makeoptions DEBUG=-g”开头的注释,增加选项“options DDB”, 将COM1的配置改为“device sio0 at isa? port IO_COM1 flags 0x80 irq 4” 2.用config –g GENERIC配置内核,然后cd ../../compile/GENERIC, make depend, make 3.将kernel.debug拷贝到目标机上,改名为xyz,使用strip –x xyz脱去其中的调试符号,然后将其拷贝到/boot/xyz 4.打开/etc/ttys,在t...
by ktrudger - BSD - 2006-09-04 13:40:08 阅读(10119) 回复(34)
想根据《Linux下用gdb检测内核rootkit》这篇文档来调试内核。 RHEL3 in vmware,可以从/dev/kmem得到sys_call_table地址。 用gdb调试内核: [root@localhost boot]# gdb vmlinux-2.4.21-20.EL /proc/kcore [code] warning: core file may not match specified executable file. Core was generated by `ro root=LABEL=/'. #0 0x00000000 in ?? () (gdb) disass sys_read No symbol table is loaded. Use the "file" command. (...
使用QEMU+gdb能够实现源代码级的内核调试,但是,存在一个问 题──当内核允许中断时,单步命令(n与s)会进入时钟中断。通过 浏览QEMU的源代码,大体把原因找了出来。 单步命令(n与s)在 gdb远程调试通讯协议中是s(参看info gdb),qemu的gdb stub 在受到s命令后将虚拟CPU进入单步状态,但是在接收到s命令前, qemu的虚拟CPU是停止的(在等待gdb的命令),注意,这个时 候,虚拟时钟计时并没有停止,所以,很可能在qemu的虚拟CP...
一个项目多个.c源文件组成,现在要对有main函数的那个文件进行gdb调试。 gcc main.c -g -o sss 提示:‘F_SETFD’未声明(在此函数内第一次使用) 出问题的函数是(void) fcntl( fileno( logfp ), F_SETFD, 1 ); 我看了一下,这个函数的第2个参数本来就是这么写的,gdb却提示这个东西未声明。 但问题是我./configure make make install整个程序能够正常安装不提示有错。 我现在是要-g一下好开始进行gdb调试,可是这个问题却卡住了编译...
1. 请问gdb在调试程序时是如何寻找源代码文件的? 2. 在自己的开发机上面开发的程序安装到另一台没有源代码的机器上后,程序有问题想调试,大家一般怎么做呢?(前提是不能将源代码拷贝到安装机上。我一般都是在安装机上开启gdb调试,然后同时在自己开发机上打开源代码,一边gdb跟踪一边看源代码执行到那里了。)
使用gdb调试时, 如果要进入子进程可以使用命令 (gdb)set follow-fork-mode xx 其中xx可以是ask, child, parent或者serial 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/17004/showart_494638.html