Vmware 调试 Linux Kernel

为什么使用Vmware而不是QEMU 这种模拟器调试呢,我觉得QEMU这种模拟器对于Vmware来说,有些不方便的是

qemu 命令行太复杂:) !!!

 1     Linux Vmware 串口双机调试
 2 ========================================
 3 1.注意,当配置好Vmrare串口后,在各自的串口对应的设备是
 4 /dev/ttyS1,这是最关键的,然后相互cat,echo 看是否能够
 5 收到消息。
 6 2.添加grub 启动项目,设置内核调试参数.
 7 添加额外的内核参数:
 8 kgdboc=ttyS1,115200 kgdbwait nokaslr
 9 
10 menuentry 'Ubuntu Kernel Debug' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-07472ed4-59a9-4ce4-9fdd-05a662658ac1' {
11     recordfail
12     load_video
13     gfxmode $linux_gfx_mode
14     insmod gzio
15     if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
16     insmod part_msdos
17     insmod ext2
18     set root='hd0,msdos1'
19     if [ x$feature_platform_search_hint = xy ]; then
20       search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  07472ed4-59a9-4ce4-9fdd-05a662658ac1
21     else
22       search --no-floppy --fs-uuid --set=root 07472ed4-59a9-4ce4-9fdd-05a662658ac1
23     fi
24         linux    /boot/vmlinuz-5.3.18 root=UUID=07472ed4-59a9-4ce4-9fdd-05a662658ac1 ro  quiet splash $vt_handoff kgdboc=kms,kbd,ttyS1,115200 kgdbwait nokaslr
25     initrd    /boot/initrd.img-5.3.18
26 }
27 3. 启动gdb
28 gdb ./vmlinux
29 dir /home/maojun/kernel/linux-source-5.3.0
30 target remote /dev/ttyS1
31 hb start_kernel
32 
33 停止被调试的机器进入调试器:
34 echo g > /proc/sysrq-trigger
echo c > /proc/sysrq-trigger

 

  1     Linux Vmware 串口双机调试
  2 ========================================
  3 1.注意,当配置好Vmrare串口后,在各自的串口对应的设备是
  4 /dev/ttyS1,这是最关键的,然后相互cat,echo 看是否能够
  5 收到消息。
  6 2.添加grub 启动项目,设置内核调试参数.
  7 添加额外的内核参数:
  8 kgdboc=ttyS1,115200 kgdbwait nokaslr 
  9 sysrq_always_enabled
 10 
 11 echo g > /proc/sysrq-trigger
 12 
 13 menuentry 'Ubuntu Kernel Debug' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-07472ed4-59a9-4ce4-9fdd-05a662658ac1' {
 14     recordfail
 15     load_video
 16     gfxmode $linux_gfx_mode
 17     insmod gzio
 18     if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
 19     insmod part_msdos
 20     insmod ext2
 21     set root='hd0,msdos1'
 22     if [ x$feature_platform_search_hint = xy ]; then
 23       search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  07472ed4-59a9-4ce4-9fdd-05a662658ac1
 24     else
 25       search --no-floppy --fs-uuid --set=root 07472ed4-59a9-4ce4-9fdd-05a662658ac1
 26     fi
 27         linux    /boot/vmlinuz-5.3.18 root=UUID=07472ed4-59a9-4ce4-9fdd-05a662658ac1 ro  quiet splash $vt_handoff kgdboc=kms,kbd,ttyS1,115200 kgdbwait nokaslr
 28     initrd    /boot/initrd.img-5.3.18
 29 }
 30 3. 启动gdb
 31 gdb ./vmlinux
 32 dir /home/maojun/kernel/linux-source-5.3.0
 33 
 34 target remote /dev/ttyS1
 35 hb start_kernel
 36 
 37 停止被调试的机器进入调试器:
 38 echo g > /proc/sysrq-trigger
 39 
 40 echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc
 41 
 42 echo c > /proc/sysrq-trigger
 43 
 44 4.使用vmware自带的东西,把这行加入 vmx文件
 45 debugStub.listen.guest64 = "TRUE"
 46 
 47 
 48 debugStub.listen.guest32=1
 49 debugStub.listen.guest64=1
 50 debugStub.listen.guest32.remote = "TRUE" 
 51 debugStub.listen.guest64.remote = "TRUE"
 52 
 53 =======================================================
 54 debugStub.listen.guest32.remote = "TRUE"     # Allows debugging from a different computer / VM instead of localhost. # The IP for remote debugging will be that of the host.
 55 debugStub.listen.guest64.remote = "TRUE"     # Same, but for 64-bit code
 56 monitor.debugOnStartGuest32 = "TRUE"         # Breaks into debug stub on first instruction (warning: in BIOS!) # This will halt the VM at the very first instruction at 0xFFFF0, you could set the next breakpoint to break *0x7c00 to break when the bootloader is loaded by the BIOS
 57 debugStub.hideBreakpoints = "TRUE"         # Allows gdb breakpoints to work
 58 bios.bootDelay = "3000"             # Delay booting the BIOS code.
 59 
 60 gdb 命令:
 61 info all-registers
 62 
 63 GRUB cmdline  加入  nokaslr 
 64 
 65 dir E:\\maojun\\share\\linux-5.3.0\\linux-source-5.3.0
 66 dir C:\\Users\\zbZle\\Desktop\\book\\qemu\\kernel-debug\\vmware\\wrapfs-latest-e9c6d88
 67 dir C:\\Users\\zbZle\\Desktop\\book\\qemu\\kernel-debug\\vmware\\e1000
 68 
 69 
 70 wrapfs 57344 0 - Live 0xffffffffc054b000 (E)
 71 
 72 
 73 set architecture i386:x86-64
 74 
 75 
 76 
 77 target remote localhost:8864
 78 
 79 
 80 cd /sys/module/usb_f_hid/sections
 81 cat .text .data .bss 
 82 
 83 add-symbol-file wrapfs.ko 0xffffffffc054b000 
 84 
 85 /sys/module/wrapfs/sections
 86 
 87 cat .text .data .bss 
 88 
 89 0xffffffffc05a3000
 90 0xffffffffc05aa000
 91 0xffffffffc05aa480
 92 
 93 
 94 add-symbol-file wrapfs.ko 0xffffffffc05a3000 -s .data 0xffffffffc05aa000 -s .bss 0xffffffffc05aa480
 95 
 96 add-symbol-file usb_f_hid.ko 0xffffffffc06d7000 -s .data 0xffffffffc06da000 -s .bss 0xffffffffc06da740
 97 5. 参考链接:
 98 https://xakcop.com/post/vmw-kernel-debugging/
 99 
100 E:\Users\zbZle\Documents\Virtual Machines\Ubuntu---1804
101 
102 ================================================================
103 open
104 inode=0xffff888078b32148
105 
106 print /x inode
107 print /x ((struct wrapfs_inode_info *)0xffff888078b32140)->lower_inode
108 print /x *((struct wrapfs_inode_info *)0xffff888078b32ac0)->lower_inode
109 print /x &((struct inode *)0xffff88806cc59628)->i_size
110 
111 watch -l *((long long *)0xffff88806cc59678)
112 
113 
114 open 
115 inode=0xffff888078b32148
116 print /x (((struct wrapfs_inode_info *)0xffff888078b32140)->lower_inode)->i_size
117 
118  print *(((struct wrapfs_inode_info *)0xffff888078b32140)->lower_inode)
119 
120 print /x &(((struct wrapfs_inode_info *)0xffff888078b32140)->lower_inode)->i_size
121 
122 watch *(long long *)0xffff888076071ef8
123 
124 ==== 0
125 
126 
127 print file.f_path.dentry.d_name.name
128  print inode->i_size
129 
130 
131 print *file.f_path.dentry
132 
133 watch *(long long *) xxx
134 watch *(long long *) 
135 
136 
137 
138 awatch
139 
140 ".~lock.1.odt#"
141 
142 awatch 读写断点

 

posted @ 2020-10-26 15:43  maojun1998  阅读(634)  评论(0编辑  收藏  举报