То, что я в основном пытаюсь сделать, - это перейти в исходный код ядра по строкам с помощью gdb.Шаг в исходный код ядра с помощью gdb
Это код, который я получил:
int main(void)
{
int childPID;
childPID = fork();
return 0;
}
, когда я скомпилировать что-то с помощью GCC -g я получаю содержательный вывод, когда я трассировать программу шаг за шагом в БГД. Я проверил файл конфигурации моего Linux установки (\ загрузки \ конфиг-3.19.0-15-родовым) и config_debug_info на:
CONFIG_DEBUG_INFO=y
на основе текста справки:
Если вы скажете Y, то итоговое изображение ядра будет включать отладочную информацию , в результате получив изображение большего размера. Скажите Y здесь, только если вы планируете использовать gdb для отладки ядра. Если вы не отладить ядро, вы можете сказать, Н.
То, что я не понимаю, почему, когда я прослеживать с помощью GDB я не получаю никакого значимого вывода?
здесь некоторые выхода я получаю:
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)
Заранее спасибо
Вы можете быть в состоянии выйти в ядро с помощью отладчика, но некоторые архитектуры не предлагают необходимую аппаратную поддержку, чтобы быть способный к одному шагу или заданию контрольных точек. Возможность увидеть источник намного проще (yum install kernel-debuginfo-). –
wallyk