Execution of kernel does not stop at the break point while doing remote debug (using kgdb).
Vishal Soni <[email protected]> Thu, 8 Dec 2005 05:28:58 +0000
| Newsgroups | gmane.user-groups.linux.delhi.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi,
After setting up the testbed, to remotely (serially) debug the kernel
and then applying the breakpoints, kernel execution does not stop at
the breakpoint.
Below are the steps :
I compiled the kernel 2.6.8 after applying the kgdb patch and made a
set up to remotely debug the kernel mdule. I used gdbmod (available at
http://kgdb.linsyssoft.com) on development machine to connect to the
target machine as shown below.
/*********************************************************************/
[root@vishalsoni linux-2.6.8]# gdbmod vmlinux
GNU gdb 6.0
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain condition=
s.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
(gdb) target remote /dev/ttyS0
Remote debugging using /dev/ttyS0
breakpoint () at kernel/kgdb.c:1212
1212 atomic_set(&kgdb_setting_breakpoint, 0);
(gdb)
/*********************************************************************/
To let GDB know where module files are located, i set GDB variable
solib-search-path
/*********************************************************************/
(gdb) set solib-search-path /home/vishal/products/tot_driver/
/*********************************************************************/
and then i did insmod on target to load the kernel module and checked
the output of /proc/modules
/*********************************************************************/
[root@localhost mon_drv]# insmod ./tot.ko
[root@localhost mon_drv]# cat /proc/modules
tot 17428 0 - Live 0xe028e000
nfsd 194976 9 - Live 0xe0219000
<snip>
/*********************************************************************/
#### my module name is "tot"
I Cross-checked if the symbols are loaded in gdb on development machine
/*********************************************************************/
(gdb) info sharedlibrary
>From To Syms Read Shared Object Library
0xe028e000 0xe028fd6c Yes /home/vishal/products/tot_driver/tot.ko
No nfsd.ko
No exportfs.ko
No lockd.ko
No md5.ko
No ata_piix.ko
No libata.ko
No sd_mod.ko
No scsi_mod.ko
(gdb)
/*********************************************************************/
this clearly shows that the symbol information is available to gdb and
i was successfully able to put a breakpoint too
(gdb) break f_mmap
Breakpoint 1 at 0xe028ec60: file
/home/vishal/products/tot_driver/tot..c, line 108.
Now, the issue is that the execution of the kernel does not stop when
this function is being called.
I am sure that this function is being used as i have some printks in
the function and their output is shown in dmesg.
Is there any thing which i am missing. Your inputs on this would be
highly appreciated.
regards,
Vishal.