модуль ядра qemu + gdb linux (.ko), после добавления точки останова информация о ко - PullRequest
0 голосов
/ 09 января 2020

Я использую отладочный модуль qemu + gdb linux. когда я подключаю кгдб. Я использую gdb cmd "add-symbol-file" для добавления информации о модуле. После этого cmd. Я использую GDB "список" CMD может искать код. После того, как я делаю точку останова, я использую «list» cmd не может получить код. Когда ядро ​​запускает точку останова, будет выводиться сообщение «Пошаговое выполнение до выхода из функции lite_fs_readdir, у которой нет информации о номере строки».

Linux версия ядра: 2.6.32.7 версия gdb: GNU gdb (GDB) Красный Hat Enterprise Linux (7.2-92.el6)

gdb output

(gdb) add-symbol-file /root/Learn-master/fs/litefs/lite_fs.ko 0xffffffffa0417000 -s 
enter code here

.data 0xffffffffa0418e80 -s .bss 0xffffffffa04194e0
add symbol table from file "/root/Learn-master/fs/litefs/lite_fs.ko" at
    .text_addr = 0xffffffffa0417000
    .data_addr = 0xffffffffa0418e80
    .bss_addr = 0xffffffffa04194e0
(y or n) y
Reading symbols from /root/Learn-master/fs/litefs/lite_fs.ko...done.
(gdb) l lite_fs_readdir 
76          }
77          return last_byte;
78      }
79
80      static int lite_fs_readdir(struct file *filp, void *dirent, filldir_t filldir)
81      {
82          loff_t pos = filp->f_pos;
83          struct inode *inode = filp->f_path.dentry->d_inode;
84          //struct super_block *sb = inode->i_sb;
85          unsigned int offset = pos & ~PAGE_CACHE_MASK;
(gdb) b lite_fs_readdir 
Breakpoint 1 at 0xffffffffa04176d4 (2 locations)
(gdb) l lite_fs_readdir 
No line number known for lite_fs_readdir.
(gdb)c
Breakpoint 1, 0xffffffffa04176d4 in lite_fs_readdir ()
(gdb) n
Single stepping until exit from function lite_fs_readdir,
which has no line number information.
...