zoukankan      html  css  js  c++  java
  • GDB的调试器及调试方法

    GDB简介

    GNU Debugger,是GNU工程为GNU操作系统开发的调试器,但它的使用不局限于GNU操作系统,GDN可以运行在UNIX、linux甚至Microsoft Windows。GDB可以调试C、C++等语言编写的程序;被调试的程序可以跟GDB运行在同一台电脑,也可以运行在不同的电脑。使用GDB我们可以1)设置断点使程序停住2)监视或修改程序中变量的值3)跟踪代码执行过程

    gdb命令


    gdb调试举例

    用一段代码实现对一个整型数的反转功能,但输入100时,程序的输出结果却不正确。

    #include<stdio.h>
    void ShowRevertNum(int iNum)
    {
    	while(iNum > 10)
    	{
    		printf("%d",iNum%10);
    		iNum = iNum/10;
    	}
    	printf("%d
    ",iNum);
    }
    int main(void)
    {
    	int iNum;
    	printf("Please input a number:");
    	scanf("%d",&iNum);
    	printf("After revert:");
    	ShowRevertNum(iNum);
    }
    

    段错误调试

    #include<stdio.h>
    #include<string.h>
    
    #define BUFSIZE 256
    
    static char acBuf[BUFSIZE];
    static char *pStr;
    int main(void)
    {
    printf("Please input a string:");
    gets(pStr);
    printf("
    Your string is:%s
    ",pStr);
    }
    

    linux中,程序崩溃时,一般会产生core文件,记录进程退出前的状态,调试段错误问题,借助于该文件,课快速定位问题。可按一下步骤生成和使用core文件

    1)让系统产生core文件:ulimit -c num #设定core文件容量(num为数字,为0是不产生core文件)

    2)运行程序,让程序奔溃,从而产生core文件

    3)gdb配合core文件,定位问题: gdb 程序名 core 文件名;如 gdb segDemo core

  • 相关阅读:
    registration system(map+思维)
    Codeforces 158B:Taxi(贪心)
    牛客小白月赛24 B-组队(二分)
    CF58C Trees(逆向思维)
    lower_bound和upper_bound学习笔记
    POJ--2689Prime Distance(区间素数筛)
    Codeforces Round #635 (Div. 2)
    navicat premium安装,使用
    Oracel 之PL/SQL Developer使用
    PLSQL,sql语句中带有中文的查询条件查询不到数据
  • 原文地址:https://www.cnblogs.com/Zzxin/p/13903634.html
Copyright © 2011-2022 走看看