GDB не может найти номера строк - PullRequest
0 голосов
/ 09 июня 2011

Я использую GDB для отладки модуля ядра Linux. После загрузки модуля я использую add-symbol-file для добавления символов модуля.

Когда я использую команду list в GDB, чтобы найти символ в модуле, он найдет его, например:

(gdb) list __do_restart
122  *      would provide type of error or success. In the case of early restart support from
123  *      cr_mods a signal will be posted at appropriate time.
124  *
125  *      NOTE: This type of restarting could be used for migrating parallel processes.
126  */
127 int __do_restart(void *data){
128     struct siginfo info;
129     struct object_stored_data *sd;
130     struct crmod_clients *clt = get_client(data);
131     memset(&info, 0, sizeof(struct siginfo));
(gdb) b __do_restart
Breakpoint 1 at 0xe081740e: file /home/amrzar/Workspace/common/commod.c, line 130.

Я даже могу установить для него точку останова. Но после первого прерывания в выполнении, когда я использую list, он говорит:

 (gdb) list __do_restart
    No line number known for __do_restart

Это просто потерянные символы! Зачем? (Я уверен в наличии отладочной информации в объектном файле) Спасибо

1 Ответ

3 голосов
/ 21 июня 2011

Я действительно не знаю, что вызывает эту проблему, но однажды у меня возникла та же проблема с использованием add-symbol-file, но добавление опции -readnow решило ее для меня!

...