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

  • 相关阅读:
    堆、栈、值类型、引用类型分析总结 Part 2
    DataGridView打印
    学习使用ArrayList
    C#与Java之比较
    【原创】串口通信测试程序
    彩色校验码的制作
    C#中使用进度条
    【原创】 Ajax之ModalPopup编程实例
    常用正则表达式
    堆、栈、值类型、引用类型分析总结 Part 1
  • 原文地址:https://www.cnblogs.com/Zzxin/p/13903634.html
Copyright © 2011-2022 走看看