首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在GDB中自动打印下N行?

在GDB中自动打印下N行,可以使用GDB的break命令和commands命令结合使用。具体步骤如下:

  1. 使用break命令设置断点,例如:break main
  2. 使用commands命令设置断点命令,例如:commands 1
  3. 在命令列表中添加printf命令,例如:printf "print $pc\n"
  4. 使用continue命令继续执行程序,直到断点被触发。

这样,当程序执行到断点时,GDB会自动打印下N行指令。

需要注意的是,这种方法只能打印出程序执行到断点时的指令,而不是真正的源代码。如果需要打印源代码,可以使用GDB的list命令或disassemble命令。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在 Vue 项目中,通过点击 DOM 自动定位VSCode的代码

Vue官方就提供了一款 vue-devtools 插件,使用该插件就能自动在 VSCode 打开对应页面组件的源代码文件,操作路径如下:使用vue-devtools插件可以很好地提高我们查找对应页面组件代码的效率...利用 VSCode 编辑器的这个特性,我们就能实现自动定位代码功能,对应的代码路径信息可以从client端发送的请求信息当中获得,再借助node的child_process.exec方法来执行VSCode...定位代码命令。...return sourceCodeChange(code, id) } }}2.3.2 计算代码行号接着在遍历源码文件的过程,需要处理对应Vue文件template模板的代码,以“\n”分割...3.1 webpcak构建项目对于webpack构建的项目来说,首先在构建配置项vue.config.js文件配置一下devServer和webpack loader,接着在main.js入口文件初始化插件

3K30

gdb调试常用指令及案例讲解

在 Linux 环境软件开发GDB 是主要的调试工具,用来调试 C 和 C++ 程序(也支持 go 等其他语言)。 一、常用指令 -g: 使用该参数编译可以执行文件,得到调试表。 gdb ....test list/l n 从第 n 开始显示程序, 后续继续输入 list/l,就可以显示后面的代码 break/b n 在第 n 设置断点,断点那一不会执行 run...在前面的例子,由于当前正在 myprint函数执行,GDB 位于第0帧的上下文中。可以通过 frame 命令来获取当前正在执行的上下文所在的帧。...下面,我们尝试使用 print 命令打印下当前栈帧的值,如下: 如果我们想看其他栈帧的内容呢?...和 print 命令一样,display 命令也用于调试阶段查看某个变量或表达式的值,它们的区别是,使用 display 命令查看变量或表达式的值,每当程序暂停执行(例如单步执行)时,GDB 调试器都会自动帮我们打印出来

6K30

Linux下gdb用法简单介绍

(gdb) list ——————从第一列出源码 1        #include 2 3        int func(int n) 4        { 5               ...) break 16 ——————设置断点,在源程序第16处。...3、 gdb 如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb自动attach上去,并调试它。...help命令只是列出了gdb的命令种类,如果要看种类的命令,使用help 命令,:help breakpoints,查看设置断点的所有命令。...Gdb,输入命令时,可以不用打全命令,只用命令的前几个字符就可以了,当然,命令的前几个字符要标志着一个唯一的命令,在linux下,可以敲击两次TAB键来补齐命令的全称,如果有重复的,gdb会把其列出来

1.6K30

【Linux】调试工具gdb的使用

腾讯云服务器 Linux文章都放在了专栏:【 Linux 】欢迎支持订阅 前言 在前文,我们已经讲解了vim工具以及gcc/g++的使用,我们可以进行编写代码以及编译代码了,但是还没有学习如何在...也很简单,d 断点编号 即可取消该断点 逐过程与逐语句调试(n\s) 所谓逐过程调试,就是对应着vs里的f10,即遇到函数不会进入。而逐语句调试对应着vs里的f11,遇到函数会进入函数内部。...n: 逐过程调试(不会进入函数) s: 逐语句调试(会进入函数) 监视窗口(查看变量信息)(p) 这里我用换一个简单的代码,来方便我们进行观察。...调试bt命令观察所调用堆栈 跳转指定(until) 在vs,我们在调试时要想跳转至指定行号的地方,我们通常都是f9断点,f5直接运行到该断点,来实现跳转,但是在gdb,我们可以在不打断点的情况下跳转至我们指定的行号位置...断点之间跳转(c) 我们知道vs下可以使用f5来进行断点之间的切换,gdb也可以,命令为c(vs的f5)(vs中使用f5都是处于调试状态下,因此gdb也是如此) 关于gdb的其它一些指令 gdb的指令还有很多

3.4K30

GDB调试程序(二)

help命令只是例出gdb的命令种类,如果要看种类的命令,可以使用help 命令,:help breakpoints,查看设置断点的所有命令。...gdb,输入命令时,可以不用打全命令,只用命令的前几个字符就可以了,当然,命令的前几个字符应该要标志着一个唯一的命令,在Linux下,你可以敲击两次TAB键来补齐命令的全称,如果有重复的,那么gdb...:     (gdb) b 'bubble( M-?     ...在GDB运行程序 ———————— 当以gdb 方式启动gdb后,gdb会在PATH路径和当前目录搜索的源文件。...查看断点时,可使用info命令,如下所示:(注:n表示断点号)     info breakpoints [n]      info break [n]  二、设置观察点(WatchPoint)

99120

Linux工具学习之【gdb

自动化任务生成 myfile 可执行程序 然后通过指令 gdb myfile 即可进入调试 $ gdb myfile //进入 gdb 调试 注意: 调试的是最终生成的可执行程序;要确保生成的程序为... l 1 就表示从代码第一开始查看其前后十,按回车后可接着往下展示,直到代码展示完毕 (gdb) l 1 //从代码第一开始查看其前后十 (gdb) l //默认查看代码最中间的十内容...注意: 经过测试发现,l 的查看策略是每次展示十,然后想要查看的第n位于中间,l 1 能直接能从第一开始的原因是前面已经没有代码了,因此如果默认只输入 l 就会展示当前代码的最中间位置前后十...即遇到函数不会进入,指令为 n (gdb) n //单行调试,不会进入函数内部 单行:一的来,每次运行完一内容即可 s 单步调试 单步调试对应着VS的 F11 ,不同于单行调试,单步调试能进入函数内部...VS的监视窗口,假设没有监视功能,那么我们可能连变量的变化情况都无法捕捉到,庆幸的是 gdb 支持监视功能 bt 查看调用堆栈 程序运行时,会先为 main 函数建立栈帧,然后运行程序,如果遇到函数

18420

GDB调试指南-源码查看

前言 我们在调试过程难免要对照源码进行查看,如果已经开始了调试,而查看源码或者编辑源码却要另外打开一个窗口,那未免显得太麻烦。文本将会介绍如何在GDB调试模式下查看源码或对源码进行编辑。...print end\n"); 9 10 printf("it will print 1 to 5\n"); (gdb) 直接输入l可从第一开始显示源码,继续输入l,可列出后面的源码...列出指定之间的源码 list first,last 例如,要列出3到15之间的源码: (gdb) l 3,15 3 { 4 if( n < 0) 5 return...printf("%d\n",n); 9 n--; 10 } (gdb) 来查看指定文件指定,或者指定文件指定函数: (gdb) l test.c:printNum1...GDB-TUI 但是本文不作介绍,有兴趣的可以探索一下。 总结 本文介绍了GDB调试的源码查看,源码编辑以及如何在GDB调试模式下执行shell命令。

2.1K40

掌握GDB调试工具,轻松排除bug

list(l): 列出源代码 quit(q): 退出 gdb 调试模式 进入 gdb 之后,输入 help 可以查看所有命令的使用说明 2.1查看源码 list [函数名][行数] 2.2断点调试 (...: test.c:12表示文件为test.c的第12设置一个断点。 threadno 线程的ID。是GDB分配的,通过输入info threads来查看正在运行中程序的线程信息。 if ......2.3单步调试 run(r) continue(c) next(n) 命令格式: (gdb) next count:count 表示单步执行多少代码,默认为 1 其最大的特点是当遇到包含调用函数的语句时...不同之处在于,当 step 命令所执行的代码包含函数时,会进入该函数内部,并在函数第一代码处停止执行。...禁用自动显示列表处于激活状态下的变量或表达式 (gdb) enable display num...

64900

gdb和makefile的讲解

Linux调试器-gdb使用 gdb可以用于Linux环境下的程序的调试,就例如vs环境下的打断点,然后逐步分析语句等 1 gdb的背景 程序的发布方式有两种,debug模式和release模式 我们在使用...-g 将test编译后的debug版本命名为test-debug 然后你就可以看到一个debug的文件,你就用gdb 对他进行调试即可: 下图对第五进行一个断点 2 gdb的使用 2.1...step:进入函数调用 对应vs里的f11 例如: n执行 s执行: 可以看到进入了函数print 2.4 设置断点和取消断点 break(b) 行号:在某一设置断点 break 函数名...:在某个函数开头设置断点 info break :查看断点信息 delete breakpoints:删除所有断点 delete breakpoints n:删除序号为n的断点 disable breakpoints...makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

9310

GDB调试入门,看这篇就够了

自动显示变量内容 假设我们希望程序断住时,就显示某个变量的值,可以使用display命令。 (gdb) display e 1: e = 8.5 那么每次程序断住时,就会打印e的值。...,继续执行下一条语句,假设已经启动调试,并在第12停住,如果要继续执行,则使用n执行下一条语句,如果后面跟上数字num,则表示执行该命令num次,就达到继续执行n的效果了: $ gdb gdbStep...printf("%d + %d = %d\n",a,b,c); (gdb) 从上面的执行结果可以看到,我们在25处断住,执行n之后,运行到26,运行n 2之后,运行到28,但是有没有发现一个问题...源码查看 前言 我们在调试过程难免要对照源码进行查看,如果已经开始了调试,而查看源码或者编辑源码却要另外打开一个窗口,那未免显得太麻烦。文本将会介绍如何在GDB调试模式下查看源码或对源码进行编辑。...小结 本节介绍了GDB调试的源码查看,源码编辑以及如何在GDB调试模式下执行shell命令。 总结 本文介绍了GDB最常见的用法,了解这些之后能够使用GDB定位大部分问题。

7.4K62

【Linux】Linux调试器-gdb使用

3.4 与断点有关操作 3.4.1 b打断点 gdb中用b来打断点 可以直接用b加程序名加函数 比如在main函数处一个断点: b myprocess.c:main 比较一下发现,代码断点并不是打在...而在gdb也想这样做,那么就用下面这个命令: disable Num 试一下myprocess.c里面的3号断点: disable 3 发现3号断点的Enb就变为n了: 重新运行一下代码:发现停在了...在gdb想要实现逐过程就得用到命令: next/n 打了一个断点在17: 然后用来实现逐过程调试:发现并没有进入到AddToTarget函数里面: 3.6 step/s逐语句 在在vs里面的...在gdb想要进入到函数的内部就用命令: step/s 打了一个断点在17: 然后用来实现逐语句调试:发现进入到AddToTarget函数里面: 发现这个代码就在7和9之间反复执行:...而在gdb想要一个部分一个部分的调试,从而方便找出代码的问题,就用到命令: continue/c 先打一些断点; 此时运行的时候就发现在17就停下来了: 想要直接从一个断点运行到下一个断点处就直接

15010

从零开始配置vim(30)——DAP的其他配置

进入到gdb会话之后可以使用gdb 的命令。例如我们使用 b main来在 main函数的位置一个断点,然后通过r来启动程序运行到断点处。...接着可以使用 n来执行下一步或者使用 c来直接运行到下一个断点。最后可以使用 q退出 基础配置 我们发现使用 nvim-gdb 插件的时候会在对应代码位置显示断点或者当前执行行。...传入的参数就是gdb接收的对应参数。 有了这些基础我们就可以对其进行配置了,我们要实现的目标就是当gdb成功加载的时候自动加载这些窗口。...在vim要实现自动化我们目前知道有两种方式,第一种使用自动命令,第二种使用插件配置中提供的回调函数。遗憾的是在这个插件我没有找到回调函数,因此我们只能采用自动命令这种方法。...最后我们通过 :set wrap设置窗口中自动换行,不然有些内容显示在一不容易查看。通过 :wincmd k移动光标到 repl窗口。

1.5K20

学习GDB

2 生成调试信息      一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件。...简写命令是ena. 8 调试代码      run 运行程序,可简写为r      next 单步跟踪,函数调用当作一条简单语句执行,可简写为n      step 单步跟踪,函数调进入被调用函数体内,...的值           $4 = 13      你可以使用set var命令来告诉GDB,width不是你GDB的参数,而是程序的变量名,:           (gdb) set var width...12 显示源代码      GDB 可以打印出所调试程序的源代码,当然,在程序编译时一定要加上 –g 的参数,把源程序信息编译到执行文件。不然就看不到源程序了。...当程序停下来以后,      GDB会报告程序停在了那个文件的第几行上。你可以用list命令来打印程序的源代码。默认打印10,还是来看一看查看源代码的GDB命令吧。

1.5K80

GDB调试-从入门实践到原理

区别在于watchpoint没有驻留某一源代码,而是指示GDB每当某个表达式改变了值就暂停执行的命令。 watchpoint分为硬件实现和软件实现两种。...在一些高级的自动化调试场景可能会用到。...n:输出单元的个数 f:输出格式,x表示以16进制输出,o表示以8进制输出,默认为x u:一个单元的长度,b表示1个byte,h表示2个byte(half word),w表示4个byte,g表示8个byte...) 下面,我们尝试使用print命令打印下当前栈帧的值,如下: (gdb) print xx $1 = 10 (gdb) print xxptr $2 = (int *) 0x7fffffffe424...) q 在上述调试过程: b 27 在第27加上断点 b test.cc:32 在第32加上断点(效果与b 32一致) info b 输出所有的断点信息 r 程序开始运行,并在第一个断点处暂停

2.6K30

VS code 插件配置手册

远程代码的同步安装环境配置工作流 ---- C/C++ Tools插件---C/C++支持 此扩展的预览版本为C / C ++添加了对Visual Studio Code的语言支持,包括: 语言服务: 代码格式(clang格式) 自动补全...Windows下想开发Linux代码需要安装Mingw开发工具 库文件的配置 打开项目到工作区, 按F1开命令行,输入: open settings json 选择Preferences:Opem...远端: 在远端终端输入: rmate -p 52698 打开要编辑的文件 : rmate -p 52698 ....环境配置 新建一个目录,并打开到工作区 按F1开命令行,输入: ftp-sync 选择Ftp-sync: Init ,新建并打开ftp-sync.json文件,初始化配置 ?...协议 "port": 22, //ftp默认端口是21,sftp的默认端口是22 "uploadOnSave": false, //是否应该自动保存上传文件

3.4K20

gdb 调试笔记

/gdb/install make ‐j4 make install 安装后程序在/usr/local/bin 原先的程序在/usr/bin 二、自动化处理 (1)内核调试脚本 gdb \ ‐ex "add‐auto‐load‐safe‐path...其参数可以是源代码,函数名或者目标程序的某个地址,trace 命令创建跟踪点,程序在此点上短暂中断,收集数据,然后程序继续往下执行。...恢复断点,将文件的断点一遍, watchpoints可能会失效 四、保存现场和回溯 (1)gdb 的快照保存 checkpoint: 生成当前状态的快照 info checkpoint:显示快照信息...call func 执行func函数并打印返回值 return result 强制返回,返回值为result 六、实用操作 gdb 重放操作 repeat (1)启动参数 gdbn :可以不加载任何...gdbinit文件,不想使用插件时不必去注释gdbinit文件了 gdb ‐q :不打印版本和介绍信息启动 gdb ‐write:对二进制程序可读可写启动,可对二进制程序指令进行修改,并保存到文件,或者启动后

88300

深入探索GDB:Linux下强大的调试神器

自定义命令与脚本自动化 3....动态控制:在GDB环境,开发者可以实时控制程序的执行流程,暂停、恢复、单步执行、跳转到指定位置等,犹如拥有了一台时光机,能够任意穿梭于程序的执行时间线上。...在GDB环境,以下是一些常用的基本命令: break :在指定的源代码位置(函数名、行号、条件表达式)设置断点。...next 或 n:单步执行下一代码,若遇到函数调用则直接跳过。 step 或 s:单步执行下一代码,若遇到函数调用则进入该函数内部。...启用TUI模式: (gdb) tui enable 2. 自定义命令与脚本自动GDB允许用户自定义命令和编写脚本,实现常见操作的自动化。

64610
领券