Я использую 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
Это просто потерянные символы! Зачем? (Я уверен в наличии отладочной информации в объектном файле)
Спасибо