简体   繁体   中英

Stepping into kernel source code with gdb

What I'm basically trying to do is to step into the kernel source code line by line using gdb.

This is the code I've got:

int main(void)
{
    int childPID;
    childPID = fork();
    return 0;
}

when I compile something using gcc -g I get meaningful output when I trace the program step by step in gdb. I've checked the configuration file of my linux install (\\boot\\config-3.19.0-15-generic) and the config_debug_info is on:

CONFIG_DEBUG_INFO=y

based on the help text:

If you say Y here the resulting kernel image will include debugging info resulting in a larger kernel image. Say Y here only if you plan to use gdb to debug the kernel. If you don't debug the kernel, you can say N.

What I don't understand is how come when I trace using gdb I don't get any meaningful output?

here is some of the output I'm getting:

Breakpoint 1, main () at ftest.c:7
7           childPID = fork();
(gdb) s 
__libc_fork () at ../sysdeps/nptl/fork.c:59
59      ../sysdeps/nptl/fork.c: No such file or directory.
(gdb) s 
54      in ../sysdeps/nptl/fork.c
(gdb) s 
111     in ../sysdeps/nptl/fork.c
(gdb) s 
__GI__IO_list_lock () at genops.c:1300
1300    genops.c: No such file or directory.
(gdb) s 
__x86.get_pc_thunk.bx () at ../sysdeps/i386/i686/multiarch/strcat.S:55
55      ../sysdeps/i386/i686/multiarch/strcat.S: No such file or directory.
(gdb) s 
__GI__IO_list_lock () at genops.c:1302
1302    genops.c: No such file or directory.
(gdb) s 
1304    in genops.c
(gdb) s 
__libc_fork () at ../sysdeps/nptl/fork.c:114
114     ../sysdeps/nptl/fork.c: No such file or directory.
(gdb) s 
120     in ../sysdeps/nptl/fork.c
(gdb) s 
121     in ../sysdeps/nptl/fork.c
(gdb) s 
124     in ../sysdeps/nptl/fork.c
(gdb) s 
131     in ../sysdeps/nptl/fork.c
(gdb) s 
124     in ../sysdeps/nptl/fork.c
(gdb) s 
131     in ../sysdeps/nptl/fork.c
(gdb) s 
206     in ../sysdeps/nptl/fork.c
(gdb) s 
209     in ../sysdeps/nptl/fork.c
(gdb) s 
212     in ../sysdeps/nptl/fork.c
(gdb) s 
__GI__IO_list_unlock () at genops.c:1309
1309    genops.c: No such file or directory.
(gdb) s 
__x86.get_pc_thunk.cx () at ../sysdeps/unix/syscall-template.S:83
83      ../sysdeps/unix/syscall-template.S: No such file or directory.
(gdb) s 
__GI__IO_list_unlock () at genops.c:1311
1311    genops.c: No such file or directory.
(gdb) s 
__libc_fork () at ../sysdeps/nptl/fork.c:215
215     ../sysdeps/nptl/fork.c: No such file or directory.
(gdb) s 
229     in ../sysdeps/nptl/fork.c
(gdb) s 
main () at ftest.c:8
8               childPID = childPID+ 1;
(gdb) s 
10          return 0;
(gdb) Quit
(gdb) 

Thanks in advance

This is a misunderstanding: The option is solely to get better information when opening the kernel-imagefile with gdb:

gdb vmlinux

Note that this works only with the (not for booting postprocessed) ELF-image.

It has nothing to do with debugging processes, neither with live-debugging the linux kernel

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM