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

gdb打印vector(亲测有效)

最新在使用gdb调试c++代码的时候,发现无法使用print命令直接打印vector对象,在网上查阅了很多资料之后,发现都是这么说的: 1)打印整个vector (gdb) p *(myVector..._M_start)@myVector.size() 2)打印第N个成员 (gdb) p *(myVector._M_impl....:stl-views-1.0.3.gdb,下载之后放到指定路径下,然后在启动gdb的时候,可以通过source引入该文件,支持很多常见的stl容器打印,非常方便: 2)使用@N无法打印第N个元素,...实际测试结果发现效果为:打印前N个元素,例如@2,会打印vector的第一个和第二个元素,如果要打印第N个元数据,我们可以通过如下两种方式: // 这两种方式,编号均从0开始 (gdb) p (myVector...当前测试的GDB版本为7.9.1,还不能直接用print命令打印vector 参考文档 https://sourceware.org/gdb/wiki/STLSupport?

1.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

LinuxGDB调试

GDB调试 GDB是GUN发布的一个强大的程序调试工具,也是Linux程序员不可或缺的一大利器。 安装GDB 注意安装你所需要的版本。...wget http://ftp.gnu.org/gnu/gdb/gdb-8.1.1.tar.gz tar -zxvf gdb-8.1.1.tar.gz cd gdb-8.1.1 ..../configure make make install ---- 启动GDB 使用GDB的前提。 gcc -g hello.c -o hello 启动GDB调试。...gdb hello GDB和Shell一样支持命令补全。。 ---- 获取帮助命令 GDB将命令分为12个大类,使用命令 “help 子类别”,可以查看每个类下面的详细帮助。...set var count = 4 ---- 查看堆栈情况 bt 每次调用一个函数,函数的地址、参数、以及内部变量都会被压入中,运行时的堆栈信息对于程序员非常重要,使用"bt"命令可以看到当前运行时的情况

3.4K50

【专业技术】在CC++程序中打印当前函数调用

基于这个事实,我想到了这样一个办法,在程序开始时,通过系统提供的atexit(),向系统注册一个回调函数,在程序调用exit()退出的时候,这个回调函数就会被调用,然后我们在回调函数中打印当前的函数调用...在上面,我提到了在“回调函数中打印当前的函数调用”,相信细心的朋友应该注意到这个了,本文的主要内容就是详细介绍,如何在程序中打印当前的函数调用。.../test1()[0x4005ed] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xff)[0x7f5c59a91eff] ..../test2(main+0x9)[0x40088d] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xff)[0x7f9370186eff] ....在这里需要说明一下的是,第3步比第2步多了一个-g选项,-g选项的主要作用是生成调试信息,位置信息就属于调试信息的范畴,经常用gdb的朋友相信不会对这个选项感到陌生。 以上转自罗索实验室

2.6K40

Linux调试器——gdb

gdb 什么是gdb debug与release gdb的基本操作 查看代码与断点 执行与调试 监视变量 什么是gdb 之前用的一直都是VS编译器进行调试,调试是一个非常重要的过程,在Linux中调试需要用到一个工具就是...在调试思路上VS编译器和gdb是一样的,但是调试过程的差距就很大了。 我们都知道Linux的操作都是通过命令完成的,调试也是一样的,靠的就是命令调试。...Linux环境下,gcc/g++编译出来的可执行程序默认是release模式 先来写一个程序验证一下 进入调试模式 gdb 你要调试的文件 后面的on debugging symbols...在VS编译器中,我们按F9是可以进行打断点的,再按一次可以取消: Linux进行打断点是:b 你要断点的行数 现在13行有一个断点,查看断点是info b: 断点也有自己的行,就是前面...断点跳跃:c 查看调用堆栈:bt 只想跑完当前函数,不受断点影响:finish 监视变量 进入函数之后要看到每个变量是什么:p 变量 这个操作可以让我们暂时看到变量的值

3.7K00

LinuxLinux调试器-gdb使用

前言 在前面的博客【Linux】编译器-gcc/g++使用已经分享了关于编译器的使用,而编译器的使用离不开调试,这次就来分享一下Linux调试器-gdb使用。 2....使用 3.1 进入gdb 默认系统中会安装gdb,使用方法就是gdb后面直接加上调试的可执行程序名: gdb myprocess-debug 就会默认进入到调试模式 想要退出就直接输入quit或者...代码运行到断点位置就会停下来: 3.4.2 info显示断点位置 info(或i) breakpoints:参看当前设置了哪些断点 info(i) locals:查看当前帧局部变量的值 在vs下打断点就会有红点...info查当前变量的值: 3.4.3 d去断点 在vs里面要取消断点直接点一下或者按F9。.../n逐过程 在vs里面的F10就是逐过程,就是在调试时候单步往下走时,如果碰见当前行的代码是函数,就直接把这个函数执行完,把这个函数当成一条语句直接执行完。

8510

Linux工具学习之【gdb

支持监视功能 bt 查看调用堆栈 程序运行时,会先为 main 函数建立帧,然后运行程序,如果遇到函数,就会为函数建立帧,执行函数,因此程序的运行本质上就是帧的创建与销毁 我们可以通过指令 bt...查看当前程序的堆栈调用情况 (gdb) bt //查看调用堆栈情况 p 临时查看变量 指令 p 变量 可以查看指定变量的信息 (gdb) p 变量 //查看变量的信息 注意: 指令 p 只能做到临时监视...,跑完当前函数 (gdb) finish //在不打断点的情况下跑完当前函数 c 断点 这个指令就是针对断点的了,前面说过 r 无法实现两个断点间的跳转,因此有一个专门的命令 c 进行断点跳转(注:...查看变量类型 本文只是介绍了部分常用指令,关于 gdb 还有很多很多指令,一时半会是学不完的,感兴趣的同学可以去这篇文章里看看《GDB使用详解》 ---- 总结 以上就是关于Linux工具:gdb...Linux 使用场景更加丰富 如果你觉得本文写的还不错的话,期待留下一个小小的赞,你的支持是我分享的最大动力!

16220

Linuxgdb的使用

当我们能够在windows下,使用vs 2019等编译器去进行调试的时候,我们可以将在Linux下使用gdb调试这两者之间进行对比: 调试这个操作,在方法上有区别吗?...(Linux和windows)其实,在调试思路上是一样的,在调试的操作方式上一定不一样。 因此,在学习Linuxgdb调试时,一定要抓住我们的调试思路去学习。...在Linux下,我们使用的是命令行调试。...:  因为在默认情况下,gdb无法对程序进行调试。...当我们进入一个函数后(这里依然使用24行的函数,也就是第一个断点的函数进行举例),想要查看main函数的堆情况,可以使用指令bt  进入这个函数后,我们只想要跑完这个函数,又不到下一个断点,那么使用指令

2.1K20

LinuxLinux调试器--gdb的使用

---- ---- 一、gdb的介绍 1. gdblinux上面的调试器,是非图形化界面纯命令行调试的,用起来非常的麻烦! 2....安装gdb工具的命令 sudo yum install -y gdb 3....值得注意的是:每一个二进制程序不仅仅只是一堆二进制代码,他们内部都是有特定格式的,Linux中形成的可执行程序是elf格式。...二进制可执行程序 2.调试运行:run 6.逐过程:n(next) 7.逐语句:s(step) 8.运行至下一个断点处:c(continue) 9.查看函数调用堆栈:bt 10.直接运行完当前函数...12.监视跟踪查看/取消监视跟踪查看:display/undisplay 13.跳转到指定行:until+行号 可以利用until来跳出循环 14.修改变量的值:set var 15.查看当前帧局部变量的值

3.5K30

Linux调试器-gdb使用

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...s或step:逐语句,进入函数调用 p 变量:打印变量的值和地址 display 变量名:跟踪查看一个变量,每次停下来都显示它的值 undisplay num:取消对先前设置的那些变量的追踪,其中num...是先前设置的跟踪变量所对应的编号 until x:跳至x行,可以让我们快速的运行代码块 finish:执行完当前函数返回,然后停下来等待命令 continue或c:从当前断点直接运行到下一个断点处

8410
领券