当前位置:Linux教程 - Linux - GDB调试器使用手册(六-2)

GDB调试器使用手册(六-2)



         程序环境
    ==========================
    “环境”包括了一系列的环境变量和它们的值。环境变量一般记录了一些常用的信息,
    比如你的用户名,主目录,你的终端型号和你的运行程序的搜索路径。一般你可以在shell
    下设置环境变量,然后这些变量被所有你所运行的程序所共享。在调试中,可以设置恰当
    的环境变量而不用退出gdb.

    `path DIRECTORY\"
    在\"PATH\"环境变量前加入新的内容(\"PATH\"提供了搜索执行文件的路径)。对于gdb和
    你的程序来说你也许要设置一些专门的路径。使用\":\"或空格来分隔。如果DIRECTORY已经
    在路径中了,这个操作将会把它移到前面。
    你可以使用串\"$cmd\"来代表当前路径,如果你用\".\"的话,它代表你使用\"path\"命令
    时的路径,gdb将在把DIRECTORY加入搜索路径前用\".\"代替当前路径

    `show paths\"
    显示当前路径变量的设置情况。

    `show environment [VARNAME]\"
    显示某个环境变量的值。如果你不指明变量名,则gdb会显示所有的变量名和它们的
    内容。environment可以被缩写成\"env\"

    `set environment VARNAME [=] VALUE\"
    设置某个环境变量的值。不过只对你所调试的程序有效。对gdb本身是不起作用的。
    值可以是任何串。如果未指定值,则该变量值将被设为NULL.
    看一个例子:
    set env USER = foo
    告诉一个linux程序,当它下一次运行是用户名将是\"foo\"

    `unset environment VARNAME\"
    删除某环境变量。

    注意:gdb使用\"shell\"环境变量所指定的shell来运行你的程序。


    工作路径
    ================================
    当你每次用\"run\"命令来运行你的程序时,你的程序将继承gdb的
    当前工作目录。而gdb的工作目录是从它的父进程继承而来的(一般是
    shell)。但你可以自己使用\"cd\"命令指定工作目录。
    gdb的工作目录就是它去寻找某些文件或信息的途径。
    `cd DIRECTORY\"
    把gdb的工作目录设为DIRECTORY
    `pwd\"
    打印输出当前目录。
    你程序的输入/输出
    ===============================
    缺省时,你的程序的输入/输出和gdb的输入/输出使用同一个终端。
    gdb在它自己和你的程序之间切换来和你交互,但这会引起混乱。
    `info terminal\"
    显示你当前所使用的终端的类型信息。
    你可以把你程序的输入/输出重定向。
    例如:
    run > outfile
    运行你的程序并把你程序的标准输出写入文件outfile中。
    另一个为你程序指定输入/输出的方法是使用\"tty\"命令,这个命令
    接受一个文件名作为参量把这个文件作为以后使用\"run\"命令的缺省命
    令文件。它还重新为子进程设置控制终端。
    例如:
    tty /dev/ttyb
    指定以后用\"run\"命令启动的进程使用终端\"/dev/ttyb\"作为程序的输入
    /输出,而且把这个终端设为你进程的控制终端。
    一个清楚的使用\"run\"命令的重定向将重新设置\"tty\"所设置的内容
    ,但不影响控制终端。 当你使用\"tty\"命令或在\"run\"命令中对输入
    /输出进行重定向时,只有你当前调试的程序的输入/输出被改变了,
    并不会影响到别的程序。
    调试一个已经运行的程序:
    ====================================

    `attach PROCESS-ID\"
    这个命令把一个已经运行的进程(在gdb外启动)连接入gdb,以便
    调试。PROCESS-ID是进程号。(UNIX中使用\"ps\"或\"jobs -l\"来查看进程)
    \"attach\"一般不重复。(当你打了一个以上的回车时)
    当然要使用\"attach\"命令的话,你的操作系统环境必须支持进程。
    另外你还要有向此进程发信号的权力。
    当使用\"attach\"命令时,你应该先使用\"file\"命令来指定进程所
    联系的程序源代码和符号表。 当gdb接到\"attach\"命令后第一件
    事就是停止进程的运行,你可以使用所有gdb的命令来调试一个“连接”
    的进程,就象你用\"run\"命令在gdb中启动它一样。如果你要进程继续运
    行,使用\"continue\"或\"c\"命令就行了。
    `detach\"
    当你结束调试后可以使用此命令来断开进程和gdb的连接。(解除gdb
    对它的控制)在这个命令执行后进程将继续执行。
    如果你在用\"attach\"连接一个进程后退出了gdb,或使用\"run\"命令执
    行了另一个进程,这个被\"attach\"的进程将被kill掉。但缺省时,gdb会
    要求你确认你是否要退出或执行一个新的进程。

    发布人:netbull 来自:中国LINUX开发联盟