来看看:linux 内核模块调试
网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup1.开启假造机,假造机运转到kgdb:Waitingforconnectionfromremotegdb
2.在Host机上运转:socattcp-listen:8888/tmp/vbox2,个中/tmp/vbox2为管道文件,它是方针机串口的重定向目标文件,socat将这个管道文件又重定向到tcpsocket的8888端口。
3.开启一个新的假造终端,cdpath/to/kernel/source/tree,然后实行gdb./vmlinux
输入
GNUgdb6.8-debian
Copyright(C)2008FreeSoftwareFoundation,Inc.
LicenseGPLv3+:GNUGPLversion3orlater<http://gnu.org/licenses/gpl.html>
Thisisfreesoftware:youarefreetochangeandredistributeit.
ThereisNOWARRANTY,totheextentpermittedbylaw.Type"showcopying"
and"showwarranty"fordetails.
ThisGDBwasconfiguredas"i486-linux-gnu"...
(gdb)set-remote
setremotebaudrateto115200c/s
setremotetargettolocaltcpsocket
kgdb_breakpoint()atkernel/kgdb.c:1721
1721wmb();/*Syncpointafterbreakpoint*/
(gdb)c
Continuing.
方针时机一向启动,直到提醒输出用户名暗码。
4.进进方针机,输出用户名暗码(保举利用字符界面下的root用户),输出g命令,方针机被断下,把持移交到Host机中的gdb中。(方针机root的用户目次中的.bashrc中增加一行aliasg=echog>/proc/sysrq-trigger)
5.在Host机中的gdb中
(gdb)set-mod-break
setbreakpointinsystemmoduleinitfunction
Breakpoint1at0xc014bac5:filekernel/module.c,line2288.
(gdb)c
Continuing.
6.在方针机中
insmodklogger2.ko
方针机再次断下,把持权移交Host机中的gdb
7.在Host机中的gdb中
Breakpoint1,sys_init_module(umod=0x0,len=0,uargs=0x0)
atkernel/module.c:2288
2288if(mod->init!=NULL)
(gdb)print-mod-segment
Name:.note.gnu.build-idAddress:0xdf977058
Name:.textAddress:0xdf975000
Name:.rodataAddress:0xdf977080
Name:.rodata.str1.4Address:0xdf9774b4
Name:.rodata.str1.1Address:0xdf977522
Name:.parainstructionsAddress:0xdf977a00
Name:.dataAddress:0xdf978440
Name:.gnu.linkonce.this_moduleAddress:0xdf978480
Name:.bssAddress:0xdf978a00
Name:.symtabAddress:0xdf977a08
Name:.strtabAddress:0xdf978078
(gdb)add-symbol-file/home/done/programs/linux-kernel/vlogger/klogger2.ko0xdf975000-s.data0xdf978440-s.bss0xdf978a00
addsymboltablefromfile"/home/done/programs/linux-kernel/vlogger/klogger2.ko"at
.text_addr=0xdf975000
.data_addr=0xdf978440
.bss_addr=0xdf978a00
(yorn)y
Readingsymbolsfrom/home/done/programs/linux-kernel/vlogger/klogger2.ko...done.
(gdb)bhook_init
Breakpoint2at0xdf976d19:file/home/done/programs/linux-kernel/vlogger/hook.c,line255.
(gdb)
你能够调试本人些的LKM模块了
附gdb的初始化设置文件~/.gdbinit
</p>12下一页
但不会命令而成为高手也是不可能的.这就好比学英语,什么语法都不懂,只捧着单词手册背单词是学不会英语的,但是没有单词词汇量英语水平也提不高的。
来看看:linux 内核模块调试
安装和登录命令:login、shutdown、halt、reboot、mount、umount、chshdefineset-remote
echosetremotebaudrateto115200c/s\n
setremotebaud115200
echosetremotetargettolocaltcpsocket\n
targetremotetcp:localhost:8888
end
defineset-mod-break
echosetbreakpointinsystemmoduleinitfunction\n
breakkernel/module.c:2288
end
defineprint-mod-segment
set$sect_num=mod->sect_attrs->nsections
set$cur=0
while$cur<$sect_num
printf"Name:%-sAddress:0x%x\n",mod->sect_attrs->attrs[$cur]->name,mod->sect_attrs->attrs[$cur]->address
set$cur=$cur+1
end
end
跋文:gdb的调试剧本真难写,复杂的字符串变量毗连和等价判别都显得好不容易,不晓得是我程度太差仍是gdb的剧本功效太弱,总之比起Windbg来讲,内核调试坚苦水平上了个品级
</p>上一页12
按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习我们可以进一步理解Linux系统: Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。 尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。 甚至目前许多应用软件都是基于它的。可是没有哪一个系统是十分完美的。 在学习的过程中,我们用的是VM虚拟机,开始时真的不真的该怎么去做,特别是我的是命令窗口界面,别人的是图形界面,我都不知道怎么调过来。 学习Linux系统在服务中的配置方法及使用方法。Linux在服务器中应用相当广,应对常用的apache,samba,ftp等服务器基本配置清楚了解。[重点,应巩固学习] 直到学习Linux这门课以后,我才知道,原来我错了。? 学习Linux半年了~个人认为不会的多在网上找资料网上有很多资料可以搜索到,LS那位说放手去搞。 请问谁有Linux的学习心得的吗?简单的说说?
页:
[1]