![](https://csdnimg.cn/release/download_crawler_static/5011543/bg5.jpg)
- 5 -
是否读到源文件,可使用 l 或 list 命令,看看 gdb 是否能列出源代码。
在 gdb 中,运行程序使用 r 或是 run 命令。程序的运行,你有可能需要设置下面四方面的事。
1、程序运行参数。
set args 可指定运行时参数。(如:set args 10 20 30 40 50)
show args 命令可以查看设置好的运行参数。
2、运行环境。
path 可设定程序的运行路径。
show paths 查看程序的运行路径。
set environment varname [=value] 设置环境变量。如:set env USER=hchen
show environment [varname] 查看环境变量。
3、工作目录。
cd 相当于 shell 的 cd 命令。
pwd 显示当前的所在目录。
4、程序的输入输出。
info terminal 显示你程序用到的终端的模式。
使用重定向控制程序输出。如:run > outfile
tty 命令可以指写输入输出的终端设备。如:tty /dev/ttyb
调试已运行的程序 两种方法:
1、在 UNIX 下用 ps 查看正在运行的程序的 PID(进程 ID),然后用 gdb PID 格式挂接正在
运行的程序。
2、先用 gdb 关联上源代码,并进行 gdb,在 gdb 中用 attach 命令来挂接进程的 PID。并用
detach 来取消挂接的进程。
暂停 / 恢复程序运行
调试程序中,暂停程序运行是必须的,GDB 可以方便地暂停程序的运行。你可以设置程序
的在哪行停住,在什么条件下停住,在收到什么信号时停往等等。以 便 于 你 查看运行时的变
量,以及运行时的流程。
当进程被 gdb 停住时,你可以使用 info program 来查看程序的是否在运行,进程号,被暂停
的原因。
在 gdb
中,我们可以有以下几种暂停方式:断点(BreakPoint)、观察点(WatchPoint)、捕捉点
(CatchPoint)、信号
(Signals)、线程停止(Thread Stops)。如果要恢复程序运行,可以使用 c 或是 continue 命
令。
一、设置断点(BreakPoint)
我们用 break 命令来设置断点。正面有几点设置断点的方法:
break
在进入指定函数时停住。C++中可以使用 class::function 或 function(type,type)格式来指定函
数名。
break
在指定行号停住。
break +offset
break -offset
在当前行号的前面或后面的 offset 行停住。offiset 为自然数。
break filename:linenum