2016-01-19 2 views
1

То, что я в основном пытаюсь сделать, - это перейти в исходный код ядра по строкам с помощью 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) 

Заранее спасибо

+0

Вы можете быть в состоянии выйти в ядро ​​с помощью отладчика, но некоторые архитектуры не предлагают необходимую аппаратную поддержку, чтобы быть способный к одному шагу или заданию контрольных точек. Возможность увидеть источник намного проще (yum install kernel-debuginfo-). – wallyk

ответ

3

Это недоразумение: Опция исключительно для получения более полной информации при открытии ядра-ImageFile с помощью GDB:

gdb vmlinux 

Обратите внимание, что это работает только с (не для загрузки постобработки) ELF-изображений.

Это не имеет ничего общего с отладки процессов, ни с живой отладки в ядре Linux

Смежные вопросы