首页
学习
活动
专区
圈层
工具
发布

Linux调试器-gdb使用

背景知识 程序的发布方式有两种,debug模式和release模式 Debug是开发者模式,而用户最终使用的是release。Debug模式下程序是可以被调试的,release模式下不可调试。...Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项 生成Debug模式下的文件:gcc -o process-Dubeg...命令 为了演示gdb命令的使用方法,以下面这个代码为例: #include int AddToTarget(int start,int end) {...\n"); return 0; } ~ gdb binFile进入gdb环境,其中binFile是一个可执行程序 q或者quit指令可退出 list或者l:现实binFile...Fun_name:Fun_name是函数名,列出某个函数的源代码 如果有多个文件,你只想查找其中一个文件,可以l 文件名:num/Fun_name或者list 文件名:num/Fun_name Tip: gdb

65710

【Linux】调试器-gdb使用

一、背景 程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g...---- 二、使用 指令合集:  list(l) 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。 list(l)函数名:列出某个函数的源代码。...undisplay:取消对先前设置的那些变量的跟踪 until X行号:跳至X行 breaktrace(或bt):查看各级函数调用及参数 info(i) locals:查看当前栈帧局部变量的值 quit:退出gdb...我们输入: gdb + 生成的可执行文件  来进行调试 进入之后我们查看代码输入:list 或者 l ,但此时是从后面代码开始查看 如果我们想要从第一行开始查看我们可以输入: l 1 gdb会默认记住我们上一个命令

3.6K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Linux】Linux调试器-gdb使用

    前言 在前面的博客【Linux】编译器-gcc/g++使用已经分享了关于编译器的使用,而编译器的使用离不开调试,这次就来分享一下Linux调试器-gdb使用。 2....使用 3.1 进入gdb 默认系统中会安装gdb,使用方法就是gdb后面直接加上调试的可执行程序名: gdb myprocess-debug 就会默认进入到调试模式 想要退出就直接输入quit或者...如果想要从程序第一行开始查就用命令: l 0 还可以使用l加程序名再加0的方式 l myprocess.c:0 不可以直接查文件,但是加上行号就可以查。...发现gdb查代码只能默认查10行 如果想要全部打出来怎么办?...进入到函数体里面就退不出来 如果想要跳转到某一行,就用到命令: until 试一下跳转到12行: 总结一下gdb使用就是: set var:修改变量的值 把指定变量直接修改为目标值

    1.3K10

    Linux调试器-gdb的使用

    ,不需要调试,release因为不含调试信息空间更小,效率更高,更适合用户使用。...要使用gdb调试,必须在源码生成二进制程序时,加上 -g选项 release版本的大小会小于debug版本 2.开始使用 先写一个简单程序: #include int sum(int...0; } makefile配置: mybin:test.c gcc -o $@ $^ -g .PHONY: clean clean: rm -f mybin 为了简化理解,这里我会用在vs2022上的调试功能来类比...如果你没有下载gdb,输入下来指令下载: sudo yum install -y gdb 进入gdb:gdb 可执行文件(debug) gdb binfile 演示:进入gdb,开始调试 显示代码...gdb也是有这个功能的 disable/enable 断点编号:使能(禁用/开启)断点 disable/enable 断点编号:使能(禁用/开启)断点 当该断点为使用情况时,Enb为yes,否则为

    51610

    【Linux】Linux调试器--gdb的使用

    ---- ---- 一、gdb的介绍 1. gdb是linux上面的调试器,是非图形化界面纯命令行调试的,用起来非常的麻烦! 2....安装gdb工具的命令 sudo yum install -y gdb 3....默认情况下,gdb无法进行对gcc现在发布的程序进行调试,因为gcc默认生成的软件是realease版本的,没有调试信息,无法被调试器gdb调试,并且gcc是默认动态链接的,如果想静态链接还需要加static...debug是给程序员用的版本,添加了调试信息,用于解决软件或程序中出现的问题,realease是发行给客户使用的版本,并未添加调试信息,只需要给客户提供优越的产品使用环境即可,至于是否能够debug调试...的使用 1.显示代码: l+行号(list)指令 gdb会默认记住历史上曾经输入的指令,l+0输入后gdb会从第零行开始显示部分的代码,我们继续回车便可以显示后半部分的代码,直到显示完停止 2.设置断点

    4.3K30

    猿创征文 | 【Linux】调试器-gdb使用

    首先我们可以明确的是,关于Linux调试器gdb的调试思维是与其他调试思想是一样的,只不过gdb有自己的指令,执行方式不同而已。...安装 首先,对于gdb的使用,我们最重要的是安装gdb: sudo yum install -y gdb 这里可能有一些安装了,一些没安装,没安装的只需要执行上面的指令即可完成。...另外,对于gdb的使用我们应该在后期进行熟练的掌握与使用。 ---- 三、总结 至此,关于Linux环境的基本工具到这里结束。...我们学习了yum工具,进行软件安装 掌握vim编辑器使用,学会vim的简单配置,掌握gcc/g++编译器的使用,并了解其过程,原理 掌握简单gdb使用于调试,掌握简单的Makefile编写,了解其运行思想...编写自己的第一个Linux 程序:进度条,学习 git 命令行的简单操作, 能够将代码上传到 Github/Gitee 上 我们能够完成对一些简单代码的编写。

    1.1K20

    Linux调试器gdb和cgdb的使用【Ubuntu】

    • 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,如果没有添加,程序无法被编译 $ gcc mycmd.c -o mycmd # 默认模式,不支持调试 $ file mycmd...]=3d5a2317809ef86c7827e9199cfefa622e3c187f, for GNU/Linux 3.2.0, with debug_info, not stripped 三、常见使用...调试器 quit -断点(breakpoints) -行号(n) 四、常见技巧 1、 安装cgdb: • 上面的基本调试还是麻烦,虽然是黑屏,但是还是想看到代码调试 推荐安装cgdb: • Ubuntu...: sudo apt-get install -y cgdb • Centos: sudo yum install -y cgdb 2、watch 执行时监视一个表达式(如变量)的值。...如果监视的表达式在程序运行期间的值发生变化,GDB 会暂 停程序的执行,并通知使用者 (gdb) l main 11 12 return result; 13 } 14 15 int main

    40910

    Linux调试器GDB详细使用方法【收藏】

    文章目录 使用命令 调试过程-如何设置断点等操作 有用的信息 博主昵称:一拳必胜客 博主主页面链接:博主主页传送门 博主专栏页面连接:专栏传送门–计算机考研 创作初心:本博客的初心是每天分享记录自己学习的脚步...同时给同样感兴趣的朋友以参考; 博主研究方向:渗透测试、嵌入式、机器学习; 博主寄语:感谢各位技术友的支持,您的支持就是我前进的动力 ; ‘’ 特别鸣谢:木芯工作室 、Ivan from Russia ---- 使用命令...直接调用 gdb hello.c ---- 调试过程-如何设置断点等操作 run #开始 kill #停止程序 break mulstore#在这个函数那设置断点 stepi #执行一条指令 disas...multstore# 反汇编这个函数 print $rax#以十进制输出这个 ---- 有用的信息 info frame #当前栈帧的信息 info registers #所有寄存器的值 help #获取有关gdb

    43550

    【Linux系统编程】Linux调试器——gdb 的基本使用

    经过之前的学习,我们已经能够在Linux上编写代码、运行代码和通过git管理代码了。但是如何在Linux上调式代码我们还不知道,所以今天要学的是Linux调试器——gdb 的基本使用。 1....我们说了Linux中的调式器是gdb,那如何使用gdb调式 如果你的机器上没有gdb可以先安装一下:sudo yum install -y gdb 然后调式的话,第一步直接gdb+可执行文件名...接下来我们就来学习一下,gdb中常用的调式操作所涉及的命令 2. gdb的基本使用 2.1 显示代码 那调式的时候,首先我们得能看到代码啊 打开调式是这样的,那我们想看看代码怎么做?...那在gdb上如何进行对应的操作呢?...s(step):逐语句(遇到函数会进入) 2.5 查看函数调用堆栈 vs上我们调用一些函数的时候可以通过函数调用堆栈查看它们的调用关系: 那在gdb上如何查看?

    1.7K21

    使用 nvm 管理 node 版本:如何在 macOS 和 Windows 上安装使用nvm

    尽管nvm功能强大,但在使用过程中可能会遇到一些问题和坑。本文将介绍nvm的基本使用方法,并解决一些常见的问题,例如安装node后,使用nvm切换版本成功,但关闭终端后无法找到node的问题等等。...二、nvm的安装与基本使用 2.1 macOS安装nvm 在macOS上,您可以通过以下两种主要方式来安装nvm:使用curl或Homebrew。...~/.zshrc 2.2 Windows安装nvm 在Windows上,您可以使用nvm-windows来安装和管理node版本。...nvm-windows是nvm的Windows版本,功能类似于macOS和Linux上的nvm。...问题3:无法安装特定版本的node 使用nvm install安装node版本时,出现错误或安装失败。 检查nvm版本 确保使用的nvm版本是最新的。

    16.8K24

    C语言(GDB调试器的使用和段错误的定位)

    项目研发过程中,不可避免地会出现或多或少的问题,有些比较简单的可以目测,有些复杂一点的,就需要使用特殊的工具——调试器(比如GDB)来协助了。...下面是一段从零开始介绍GBD调试器的用法,以及如何快速定位段错误的视频。建议在WIFI环境下观看。 视频大小:50.8M 视频时长:17分22秒 没有WiFi?讨厌广告?没耳机?不够清晰?...1,将待调试的代码使用 -g 来编译,举例: gcc debugme.c -o debugme -g 2,使用 gdb 启动待调试代码: gdb ....core文件,直接定位出错位置,举例: gec@ubuntu:~/test$ gdb ..../debugme core GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1 …… …… #0 0x0804845c in index_to_the_moon

    2.7K20

    Mac上使用 gdb 调试程序

    gdb 最新版本的 Mac 默认只能使用 lldb 进行程序调试,但对于习惯使用 gdb的人来说还是希望在Mac下使用gdb调试程序才感得更爽。 有没有办法可以在最新的Mac版本上使用gdb呢?...想在最新的Mac上使用 gdb你需要做下面几件事儿。 安装 gdb 通过下面的命令安装gdb brew install gdb 对gdb进行签名 在签名之前首先要创建一个系统签名。...执行下面的命令对gdb进行签名 sudo codesign -s 证书名 /path/gdb 重启MAC 将gdb安装好后,需要重启一下MAC。...~/.gdbinit 验证 写个 helloworld C 程序,通过下面的命令进行编译 gcc -g -O1 -o helloworld helloworld.c -lstdc++ 注意,在Mac上使用...gcc编译程序时,一定要带 -lstdc++,否则linker会报错 执行 gdb helloworld 试一吧。

    3K30

    如何在macOS上监听单个应用HTTPS流量

    第三,你还需要配置你的系统和特定应用来使用这些证书。最后,在真正拦截并显示网络通信数据之前,你还需要浏览一大堆代理文档和配置文件。...在这篇文章中,我将教会大家如何在macOS上监听和拦截单个应用的HTTPS加密流量。 概述 拦截通信流量的步骤大致如下: 1. 生成一个root证书; 2. 安装证书; 3....使用proxychains来为制定应用提供代理服务; 4....使用mitmproxy拦截通信数据; 安装工具 安装proxychains【GitHub主页】,使用命令“brew install proxychains-ng”,别忘了后面的“-ng”: brewinstall.../libproxychains4.dylib 总结 这篇文章只提到了一小部分大家在尝试拦截HTTPS的时候可能会遇到的问题,但大多数情况下大家还是可以按照本文提供的思路在macOS

    2K50

    【Linux课程学习】:Linux的调试器-gdb的使用(常见指令,cgdb)

    ●gdb --version :查看当前gdb的版本。 ●sudo yum install -y gdb :安装gdb。 ●-g :生成debug版本的可执行程序。...●breaktrace(简写bt):查看各级函数调用及参数使用。 ●info (i)locals:查看当前栈帧局部变量的值。 ●display 变量:跟踪查看某个变量,每次停下都显式它的值。...1检查gdb是否安装 1.检查gdb的版本: gdb --version 2.安装gdb: sudo yum install -y gdb 已安装: 未安装: 2.让程序是debug模式...断点使用 1.增加断点: 在一次调试周期中,序号只能线性递增。也就是说,如果最开始打了两个断点,他们的序号为1,2。然后新增断点时,不管有没有删除1,2号断点,新增的断点都是从3号开始。...其他指令: breaktrace(简写bt):查看各级函数调用及参数使用。 info (i)locals:查看当前栈帧局部变量的值。

    58010

    如何在MacBook M1上无缝使用Win11和MacOS?

    抛开M1和MacOS其他的华丽特色不谈,很多习惯了Windows系统的同学,在换了这台小巧轻便的MacBook后,依然会觉得Mac系统有各种的不方便。...当然,这些兼容性问题在MacOS上也不是没有解决办法,只要会折腾各种插件,应用,也能够搞定。 不过,谁会拒绝一台可以在Windows和MacOS间无缝切换的MacBook呢?...对动态分辨率提供支持,在窗口化视图模式下使用 Linux 虚拟机更为方便:调整虚拟机窗口的大小,Linux 将自动刷新,以显示匹配的分辨率。 3....关于安卓应用何时在Windows11上能够支持,我找到了一篇外文报道,大致给大家翻译一下里面的重点: 微软已经宣布 Windows 11 将原生支持 Android 应用程序。...小尾巴 总的来说,如果你想在MacOS上使用(我说的是使用,而不仅仅是体验)Windows的话,Parallels是你现阶段最好的选择。换句话说,它就是为了帮你在MacOS下使用别的操作系统而生的。

    2.4K10

    如何在MacBook M1上无缝使用Win11和MacOS?

    抛开M1和MacOS其他的华丽特色不谈,很多习惯了Windows系统的同学,在换了这台小巧轻便的MacBook后,依然会觉得Mac系统有各种的不方便。...当然,这些兼容性问题在MacOS上也不是没有解决办法,只要会折腾各种插件,应用,也能够搞定。 不过,谁会拒绝一台可以在Windows和MacOS间无缝切换的MacBook呢?...对动态分辨率提供支持,在窗口化视图模式下使用 Linux 虚拟机更为方便:调整虚拟机窗口的大小,Linux 将自动刷新,以显示匹配的分辨率。 3....关于安卓应用何时在Windows11上能够支持,我找到了一篇外文报道,大致给大家翻译一下里面的重点: 微软已经宣布 Windows 11 将原生支持 Android 应用程序。...小尾巴 总的来说,如果你想在MacOS上使用(我说的是使用,而不仅仅是体验)Windows的话,Parallels是你现阶段最好的选择。换句话说,它就是为了帮你在MacOS下使用别的操作系统而生的。

    3K30

    在 MacOS 上通过 Lima 使用 Docker

    为什么要使用 lima 目前在 macOS 上如果想使用 docker,那么最直接的就是使用 官方推出的 docker-desktop[1] docker-desktop 带有 gui 进行管理。...而 lima 提供了自定义 cpuType 的选项 lima 是什么 Linux virtual machines, typically on macOS, for running containerd...在我看来,就是在 macOS 上搞容器,合我心意就开始实践 如何使用 lima 安装 macOS 就不多说了,直接 brew 一把梭 brew install lima 开始创建实例 macOS 和 Windows...使用 docker 实例 刚开始使用比较别扭,需要通过 limactl shell docker docker ps 类似这样的进行操作。...常见问题 如何在局域网中暴露端口 默认只能主机访问,如果需要暴露端口,那么就需要更改监听地址为 0.0.0.0 然后可以查看这个讨论: Expose Lima Machine Ports Lan[4]

    3.3K20
    领券