GDB 调试器

2024-05-25 19:04
文章标签 gdb 调试器

本文主要是介绍GDB 调试器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

GDB 功能

  • 在程序启动之前指定一些可以影响程序行为的变量或条件。
  • 在某个指定的地方或条件下暂停程序,在程序停止时检查已经发生了什么。

调试信息与调试原理

  • 一般要调试某个程序,为了能清晰地看到调试的每一行代码、调用的堆栈信息、变
    量名和函数名等信息,需要调试程序含有调试符号信息。
  • 使用 gcc 编译程序时,如果加上 -g 选项即可在编译后的程序中保留调试符号信息
    g++ -g -o hello_gdb hello_gdb.cpp
    

启动 GDB 调试

直接调试目标程序

gdb ./hello_gdb

附加进程

  • 在某些情况下,一个程序已经启动了,我们想调试这个程序,但是又不想重启这个程序,比如调试 Redis
  • 当使用 gdb attach 上目标进程后,目标进程会暂停下来,可以使用 continue 让目标程序继续运行。
  • 当调试完目标程序并且想结束此次调试,同时不对目标程序有任何影响,使用 detach
 ps -ef | grep redis # 得到 pid = 1294# root 1294 1 0 May14 ? 00:10:36 redis-server 127.0.0.1:6379gdb attach 1294detach# 退出 gdb 调试quit

调试 core 文件

  • 有时候服务器在程序运行一段时间后会突然崩溃。
  • 只要程序在崩溃的时候有 core 文件产生,就可以使用这个 core 文件来定位崩溃的原因。
  • linux 系统默认不开启程序崩溃产生 core 文件这一机制,我们可以使用 ulimit -a 命令来查看系统是否开启了这一机制。
    root@hecs-94806:~/holo_render/test# ulimit -a
    core file size          (blocks, -c) 0
    ...
    
  • 发现 core file size 那一行默认是 0,表示关闭生成 core 文件。可以修改为不限制大小
    ulimit -c unlimited
    root@hecs-94806:~/holo_render/test# ulimit -a
    core file size          (blocks, -c) unlimited
    ...
    
  • 测试:
    gdb test_core core
    

常用命令

在这里插入图片描述
在这里插入图片描述


这篇关于GDB 调试器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1002362

相关文章

GDB调试程序入门

http://blog.csdn.net/haoel/article/details/2880 用GDB调试程序 GDB概述 ———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所

git的使用和gdb工具

1.git的使用 首先现在gitee上新建一个仓库 然后复制克隆链接到本地仓库 在本地仓库中,我们可以用git status查看仓库状态 我们要提交代码就是要三步 git add 文件名 git commit -m "写提交的日志" git push 将代码上传到远端仓库 然后你就完成一次提交了 2.调试工具gdb 程序的发布模式有两种,de

GDB watch starti i files

watch break starti 在程序的最初开始运行的位置处断下来 ​​ i files 查看程序及加载的 so 的 sections ​​

GDB 查看汇编

查看汇编 x disassemble

【Linux】GDB的使用(工具篇)

文章目录 背景GDB的基本功能       背景 Linux gcc/g++出来的二进制程序,默认是release模式要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项程序的发布方式有两种,debug模式和release模式 debug 与 release的区别 在软件开发中,Debug(调试)和 Release(发布)版本有以下一些主要区别:

GDB 反向调试

使用调试器时最常用的功能就是step, next, continue,这几个调试命令都是“往下执行”的, 但是很多时候会有这种需求:你在调试的过程中多跳过了几步而错过中间过程,这时候不得不重头调试一遍,非常麻烦。而GDB从7.0版本开始支持反向调试功能,也就是允许你倒退着运行程序,或者说撤销程序执行的步骤从而会到以前的状态。   直观地来看,加入你正在使用GDB7.0以上版本的调试器并且运行在

关于GDB运行时No symbol table is loaded. Use the “file“ command.的解决方法

最近有同学问GDB使用的问题,对此做一个整理。 首先,GDB已经报错file找不到了,那可以运行file test检测一下 (gdb) file testReading symbols from test...(no debugging symbols found)...done. 发现找不到可执行文件,所以问题应该在于编译时候没有加上ggdb3,重新编译一下 ty@ubuntu:

linux下简单 GDB 调试

1.找到可执行文件路径 gdb /path/ 2.打断点 break fileName:lineNum 3.执行 run 4.查看崩溃位置 bt

arm调试-- gdb与gdbserver的安装与使用

一、安装 1.下载gdb源码 https://ftp.gnu.org/gnu/gdb/gdb-7.11.1.tar.gz 2. 解压编译gdb以及gdbserver (1)gdb PC端 tar -zxvf gdb-7.11.1.tar.gzcd gdb-7.11.1 mkdir _install./configure --target=aarch64-linux-gnu --d

gdb @entry= 是什么意思

调用函数时传入的参数值   The @entry form refers to the value of the parameter when the function was entered. This isn't always available, but sometimes it is -- there is a DWARF extension for it, and GCC emi