用GDB调试程序(2)

2009-05-13 01:29:17来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

十、查看寄存器
    要查看寄存器的值,很简单,可以使用如下命令:      
    info registers  
        查看寄存器的情况。(除了浮点寄存器)      
    info all-registers
        查看所有寄存器的情况。(包括浮点寄存器)      
    info registers  
        查看所指定的寄存器的情况。          
    寄存器中放置了程序运行时的数据,比如程序当前运行的指令地址(ip),程序的当前堆栈地址(sp)等等。你同样可以使用print命令来访问寄存器的情况,只需要在寄存器名字前加一个$符号就可以了。如:p $eip。
 改变程序的执行
    一旦使用GDB挂上被调试程序,当程序运行起来后,你可以根据自己的调试思路来动态地在GDB中更改当前被调试程序的运行线路或是其变量的值,这个强大的功能能够让你更好的调试你的程序,比如,你可以在程序的一次运行中走遍程序的所有分支。
一、修改变量值
    修改被调试程序运行时的变量值,在GDB中很容易实现,使用GDB的print命令即可完成。如:      
        (gdb) print x=4      
    x=4这个表达式是C/C++的语法,意为把变量x的值修改为4,如果你当前调试的语言是Pascal,那么你可以使用Pascal的语法:x:=4。      
    在某些时候,很有可能你的变量和GDB中的参数冲突,如:      
        (gdb) whatis width
        type = double
        (gdb) p width
        $4 = 13
        (gdb) set width=47
        Invalid syntax in expression.
    因为,set width是GDB的命令,所以,出现了“Invalid syntax in expression”的设置错误,此时,你可以使用set var命令来告诉GDB,width不是你GDB的参数,而是程序的变量名,如:      
        (gdb) set var width=47          

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:初试openbsd 心得

下一篇:有关FreeBSD的汉化与使用