GDB(二):启动GDB

        GDB 是GNU 开源组织发布的一个强大的UNIX 下的程序调试工具。一般来说,GDB主要帮忙你完成下面四个方面的功能:

<1>启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。

<2>可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)

<3>当程序被停住时,可以检查此时你的程序中所发生的事。

<4>动态的改变你程序的执行环境。


1 GDB命令

root@ubuntu:/# gdb --help

This is the GNU debugger.  Usage:

gdb [options] [executable-file [core-file or process-id]]

gdb [options] --args executable-file [inferior-arguments ...]

其中,options包含如下:

参数

说明

--args

Arguments after executable-file are passed to inferior

--cd=DIR

Change current directory to DIR.

--command=FILE, -x

Execute GDB commands from FILE.

--eval-command=COMMAND, -ex

Execute a single GDB command.


2 启动GDB的方法

    启动GDB有以下几种方法:

<1>gdb executable-file          即通过gdb来调试可执行文件

<2>gdb executable-file core  其中,core是程序在执行过程中遇到段错误等异常时而生成的保存当时堆栈信息的文件。通过gdb + 可执行文件 + core,可用来调试查看当时发生段错误时的堆栈信息。

<3>gdb process  pid              即通过gdb来调试运行的进程

2.1 GDB 可执行文件

启动方式:gdb executable-file

<1>设置命令行参数的方法1:

root@ubuntu:/home/ # gdb executable-file

GNU gdb (GDB) 7.1-ubuntu

………

Reading symbols from /home/lincoln/lchtool/form...done.

(gdb) set args argument1 argument2                                                         /*设置参数*/

(gdb) r

<2>设置命令行参数的方法2:

root@ubuntu:/home/ # gdb --args executable-file argument1 argument2   /*直接在启动命令设置参数*/

(gdb) r

<3>设置命令行参数的方法2:

root@ubuntu:/home/ # gdb executable-file 

(gdb) r argument1 argument2          /*直接在启动命令设置参数*/

<4>显示命令行参数:

root@ubuntu:/home/ # gdb --args executable-file argument1 argument2

(gdb)show args         /*显示命令行参数*/


2.2 GDB coredump

启动方式:gdb executable-file core

root@ubuntu:/ # gdb gdbtest core-gdbtest-1669-1477049624

GNU gdb (GDB) 7.1-ubuntu

Copyright (C) 2010 Free Software Foundation, Inc.

Core was generated by `./gdbtest'.

Program terminated with signal 11, Segmentation fault.

#0  0x0000000000400548 in main () at gdbtest.c:9

9            *a = b;

(gdb) bt

#0  0x0000000000400548 in main () at gdbtest.c:9

(gdb)



2.3 GDB 运行的进程

启动方式1:gdb executable-file pid

启动方式2:gdb attach pid

启动方式3:通过gdb executable-file  关联源代码,然后在执行 attach pid 命令挂接进程,使gdb取得进程的控制权,最后通过detach来取消挂接的进程。

root@ubuntu:/# gdb gdbtest

GNU gdb (GDB) 7.1-ubuntu

……

Reading symbols from /gdbtest...done.

(gdb) attach 1686

Attaching to program: / gdbtest, process 1686

Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done.

Loaded symbols for /lib/libc.so.6

Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.

Loaded symbols for /lib64/ld-linux-x86-64.so.2

main (argc=1, argv=0x7fff9b7bc238) at gdbtest.c:25

25       }

(gdb)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值