zoukankan      html  css  js  c++  java
  • gdb调试

    前期准备

    • 一般来说GDB主要调试的是C/C++的程序。在gdb调试之前,必须要把调试信息加到可执行文件中。使用编译 器(cc/gcc/g++)的 -g 参数可以做到这一点。如:
    gcc -g hello.c -o hello 
    g++ -g hello.cpp -o hello 
    
    • 如果没有-g,将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。

    启动 gdb 有三种方式:

    • gdb
      program是可执行程序。
    • gdb core
      用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。
    • gdb -p
      通过top得到要调试程序的pid,然后进行调试。

    参数

    GDB启动时,可以加上一些GDB的启动开关,详细的开关可以用gdb -help查看。常用的参数:

    -symbols <file> 
    -s <file> 
    从指定文件中读取符号表。 
    
    -se file 
    从指定文件中读取符号表信息,并把他用在可执行文件中。 
    
    -core <file> 
    -c <file> 
    调试时core dump的core文件。 
    
    -directory <directory> 
    -d <directory> 
    加入一个源文件的搜索路径。默认搜索路径是环境变量中PATH所定义的路径。
    

    当以gdb 方式启动gdb后,gdb会在PATH路径和当前目录中搜索的源文件 。 如要确认gdb是否读到源文件,可使用l或list命令,看看gdb是否能列出源代码。

    运行时。可以设置下面四方面的事。

    • 程序运行参数。
      set args 可指定运行时参数(也可以指定配置文件)。(如:set args 10 20 30 40 50)
      show args 命令可以查看设置好的运行参数。
    • 运行环境。
      path 可设定程序的运行路径。
      show paths 查看程序的运行路径。
      set environment varname [=value] 设置环境变量。如:set env USER=hchen
      show environment [varname] 查看环境变量。
    • 工作目录。
      cd 相当于shell的cd命令。
      pwd 显示当前的所在目录。
    • 程序的输入输出。
      info terminal 显示你程序用到的终端的模式。
      使用重定向控制程序输出。如:run > outfile
      tty命令可以指写输入输出的终端设备。如:tty /dev/ttyb

    具体来说就是
    例如一个程序名为prog 参数为 -l a -C abc
    则,运行

    gcc/g++ -g  prog.c/cpp -o prog
    

    就可以用gdb调试程序prog

    gdb prog
    

    进入gdb调试界面
    输入参数命令set args 后面加上程序所要用的参数,注意,不再带有程序名,直接加参数,如:

    set args -l a -C abc
    

    回车后输入
    r
    即可开始

  • 相关阅读:
    codeforces round#600
    第三章:数据操作
    1143 Lowest Common Ancestor (30 分)
    游标
    1151 LCA in a Binary Tree (30 分)
    jQuery之setInterval()定时器
    C程序第四次作业
    C程序第三次作业
    C程序第二次作业
    C程序第一次作业
  • 原文地址:https://www.cnblogs.com/xiaohaigegede/p/14782726.html
Copyright © 2011-2022 走看看