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

    在写大的代码量时,最难办的就是遇到段错误,gdb是一个很好的调试工具

    参考链接:https://blog.csdn.net/runner668/article/details/79997523

    https://blog.csdn.net/liuruiqun/article/details/50314313

    1. 段错误是什么

    一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况。这里贴一个对于“段错误”的准确定义(参考Answers.com):

    2. 段错误产生的原因

    2.1 访问不存在的内存地址

    1 #include<stdio.h>
    2 #include<stdlib.h>
    3 void main()
    4 {
    5         int *ptr = NULL;
    6         *ptr = 0;
    7 }

    2.2 访问系统保护的内存地址

    1 #include<stdio.h>
    2 #include<stdlib.h>
    3 void main()
    4 {
    5         int *ptr = (int *)0;
    6         *ptr = 100;
    7 }

    2.3 访问只读的内存地址

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    void main()
    {
            char *ptr = "test";
            strcpy(ptr, "TEST");
    }

    2.4 栈溢出

    #include<stdio.h>
    #include<stdlib.h>
    void main()
    {
            main();
    }

    使用方法:

      使用 -g去编译源码,如将编译后的可执行文件命名为app

      1.gdb ./app

      2.run

      3.如果收到信号停止,可以执行  continue 继续执行

      4.可以用print  xxx查看段错误的原因

  • 相关阅读:
    程序员开发工作之算法和架构
    iOS开发学习概述及知识整理
    git基本技巧及进阶
    使用命令行工具运行Xcode 7 UI Tests
    技巧集锦2
    Xcode开发小问题集锦
    Xcode 7如何 免费 真机调试iOS应用
    常用shell script 珍藏
    多线程学习7--CountDownLatch
    学习多线程6---栅栏
  • 原文地址:https://www.cnblogs.com/edan/p/10337658.html
Copyright © 2011-2022 走看看