一 查看源代码:
(1)list命令打印程序源代码:
*list <linenum>:显示程序第linenum行周围的源程序。
*list <function>:显示函数名为function的函数的源代码。
*list:显示当前行后面的源程序。
*list +:显示当前行后面的源程序。
*list -:显示当前行前面的源程序。
*list <first> <last>:显示从first到last行之间的源代码。
*list ,<last>:显示当前行到last行之间的源代码。
*list <first>,:显示first到当前行的源代码。
*list <filename:linenum>:哪个文件哪一行。
*list <filename:function>:哪个文件的哪个函数。
*list <+/-offset>:当前行的正负偏移量。
(2)搜索源代码:
*forward-search <regexp>或search <regexp>:向下搜索匹配正则表达式的语句。
*reverse-search <regexp>:向前搜索匹配正则表达式的语句。
(3)指定源文件的路径:
*directory <dirname...>:加入一个源文件路径到当前路径前面。
*show directories:显示定义的源文件搜索路径。
*directory:清除所有自定义的源文件搜索路径信息。
(4)源代码的内存:
*info line后面跟:"行号","文件名:行号","函数名","文件名:函数名"。打印出所指定源代码在运行时的内存地址。
如:info line func
*disassemble:查看源代码的当前执行的机器码。
如:disassemble func。
二 查看栈信息:
(1)backtrace或bt(简写):打印当前函数的调用栈的所有信息。
*如下图:
函数的调用信息:main->print2->print1。
*backtrace <n>:打印栈顶上n层的栈消息。
*backtrace <-n>:打印栈底下n层的栈消息。
(2)frame或f:查看栈上某一层的消息(包括打印当前栈层消息)。
*frame <n>:n是一个从0开始的整数,是栈中的层编号,不打n,显示当前栈层。
*up <n>:表示向栈上面移动n层的,可以不打n,表示向上移动一层。
*down <n>:表示向栈下面移动n层的,可以不打n,表示向下移动一层。
*info frame:打印更为详细的当前栈层的消息。
(3)打印参数、变量和异常:
*info args:打印当前函数的参数名和其值。
*info locals:打印当前函数中所有局部变量以及其值。
*info catch:打印当前函数中的异常处理消息。