蒙在股里 发表于 2015-1-16 11:52:18

来看看:linux 内核模块调试

网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup
 1.开启假造机,假造机运转到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下一页


但不会命令而成为高手也是不可能的.这就好比学英语,什么语法都不懂,只捧着单词手册背单词是学不会英语的,但是没有单词词汇量英语水平也提不高的。

蒙在股里 发表于 2015-1-16 13:13:01

来看看:linux 内核模块调试

安装和登录命令:login、shutdown、halt、reboot、mount、umount、chsh
  defineset-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系统:

山那边是海 发表于 2015-1-18 16:28:09

Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。

小女巫 发表于 2015-1-27 11:57:09

尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。

海妖 发表于 2015-2-5 13:08:04

甚至目前许多应用软件都是基于它的。可是没有哪一个系统是十分完美的。

精灵巫婆 发表于 2015-2-12 00:07:03

在学习的过程中,我们用的是VM虚拟机,开始时真的不真的该怎么去做,特别是我的是命令窗口界面,别人的是图形界面,我都不知道怎么调过来。

不帅 发表于 2015-3-2 21:42:21

学习Linux系统在服务中的配置方法及使用方法。Linux在服务器中应用相当广,应对常用的apache,samba,ftp等服务器基本配置清楚了解。[重点,应巩固学习]

柔情似水 发表于 2015-3-11 07:58:10

直到学习Linux这门课以后,我才知道,原来我错了。?

爱飞 发表于 2015-3-18 03:26:12

学习Linux半年了~个人认为不会的多在网上找资料网上有很多资料可以搜索到,LS那位说放手去搞。

小魔女 发表于 2015-3-25 12:51:26

请问谁有Linux的学习心得的吗?简单的说说?
页: [1]
查看完整版本: 来看看:linux 内核模块调试