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

在我的GDB二进制文件中,"info函数“给出了很多不需要的函数名。

在您的GDB二进制文件中,"info函数"给出了很多不需要的函数名。为了解决这个问题,您可以使用以下方法:

  1. 函数过滤:GDB提供了过滤函数的选项,您可以使用命令set print inferior-events off来关闭不需要的函数名显示。这样,当您使用"info函数"命令时,只会显示与程序执行相关的函数。
  2. 调试符号优化:在编译您的二进制文件时,可以使用优化选项来减少生成的调试符号。例如,使用GCC编译器时,可以使用-O2-O3选项来进行优化。这样可以减少不必要的函数名和调试信息。
  3. 使用GDB脚本:您可以编写一个GDB脚本来过滤不需要的函数名。例如,您可以编写一个脚本来解析"info函数"命令的输出,并根据您的需求过滤掉不需要的函数名。
  4. 使用GDB插件:有一些第三方的GDB插件可以帮助您更好地管理和过滤函数名。例如,GDB Dashboard是一个流行的插件,它提供了一个可定制的仪表盘界面,可以显示您感兴趣的信息。

总结起来,通过函数过滤、调试符号优化、编写脚本或使用插件等方法,您可以在GDB中过滤掉不需要的函数名,从而更好地进行调试和分析。

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

相关·内容

Linux:开发工具(3)

,我给你们提供保存之前版本的服务”,于是乎很多同学开始加你的微信,然后你就开始给李四、王五、赵六……分别建了目录,他们会将旧的版本发给你保存,然后当他们需要的时候,找到你就可以找到之前的版本了。...那我能不能写一些软件来自动化这些无聊繁琐的工作??于是乎你写出了两个软件,一个是服务端负责版本管理,另一个是客户端负责给用户查看。...gdb 安装gdb:yum install gdb 程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试...命令:gdb 可执行程序   1、有关代码展示 list(l) 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。 list(l) 函数名:列出某个函数的源代码。  ...:把函数当成一个语句(逐过程) s或step:不会跳过代码块(逐语句)  3、有关断点 break(b) 行号:在某一行设置断点 break(b) 函数名:在某个函数开头设置断点 info(

6010

Linux调试器-gdb的使用

回答:一款软件在发布前肯定需要开发,公司立项后就会搭建团队开发,在开发过程中肯定会遇到各种各样的问题,为了找出程序中的问题,就需要进行调试,也就是说可执行程序中要传值调试信息来帮助程序员来发现问题,在成功解决完所有问题后...在调试过程中可以看到代码。 打断点。 局部调试。 可以看到局部变量的信息。 可以看到函数的调用堆栈。 可以逐语句调试。 可以逐过程调试。 下面正式开始Linux的调试。...打断点:b + 行号/函数名/file:行号:对指定位置打断点 b line 察看所打断点:info b:查看我们所打的断点 info b 能打断点,当然也要能删除断点。...gdb指令汇总: list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。 list/l 函数名:列出某个函数的源代码。 r或run:运行程序。...s或step:进入函数调用 break(b) 行号:在某一行设置断点 break 函数名:在某个函数开头设置断点 info break :查看断点信息。

10110
  • Linux开发工具——gdb篇

    为了能够控制在源码生成二进制程序的时候加上-g选项,我们可以在makefile文件中进行操作:   我们在windows写代码时,调试工具大家多多少少也都用过,但是为什么还分为debug版本和release...开始使用   我们有了带调试信息的可执行程序之后,使用 gdb mybin,进入到调试页面:   当我们看到这样的页面,就说明你已经开始调试了,下面我来一一介绍在gdb中对应指令的功能。...用法: l 行号或 l 函数名 测试用例:   为什么使用list 3不是从第三行开始的?这是因为gdb的list行为是 将要显示的行放在比较靠中间的位置,而不是从所输入的行开始显示。...breakpoint(或b)命令 作用: 在某一行或者某个函数设置断点。 用法: b 行号或b 函数名或b 文件名:行号 info 命令 作用: 查看断点信息。...如果运行时经过断点,那么在info b的时候,就会显示命中次数:   在vs中,我们有单步调试逐语句和逐过程的快捷键:   那么在Linux下gdb调试工具的单步调试就是: next(或n)命令 作用

    23510

    Linux基础——Linux开发工具(中)_gccg++

    函数库 函数库一般分为静态库和动态库两种: 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也 就不再需要库文件了。...其后缀名一般为.a 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时 链接文件加载库,这样可以节省系统的开销。...-static 下面给大家列举出了gcc的常用选项 4....我们想进入gdb模式,我们可以: 指令:gdb 文件名 我们想退出gdb模式,我们可以: 指令:ctrl + d 或 quit 下面给大家介绍一下常用的gdb指令: 调试: r或run:...info/i locals:查看当前栈帧当中局部变量的值 断点: break/b n:在第n行设置断点 break 函数名:在某个函数开头设置断点 info break/b:查看已打断点信息

    16510

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

    ●list (文件名+:)(行号):查看行号位置的往上5行,往下5行,行号处于中间位置。 ●list (函数名):查看某个函数。 ●run:执行程序。...●break(简写:b) (指定文件) +(行号):在指定文件的指定行号增加断点。 ●break(简写:b)(指定文件)(函数名):在某个函数的开头设置断点。...: 在gcc/g++后面加上-g Linux gcc/g++默认生成的二进制程序是release模式。...在源代码生成二进制文件的过程中加上-g就生成的是debug模式。...break(简写:b) (指定文件) +(行号):在指定文件的指定行号增加断点。 break(简写:b)(指定文件)(函数名):在某个函数的开头设置断点。

    20010

    Linux中的gdb调试

    Linux中gcc/g++出来的二进制程序,默认是release模式。 所以我们需要在gcc/g++的过程中需要加上一些指令。...可是对于普通用户来说的话并不需要这些功能,这样的话也就导致,Release版本本身的大小就会比Debug版本小很多。用户只需要能够运行就行了,没必要去调试。...4、使用gdb调试的命令 gdb (需要调试的文件):gdb使用方法 //在gdb情况之下的命令 list:查看源文件(可简写为 l ) l n:l是list的缩写,n代表的是查看第几行 l (文件名)...(Enter):按回车 l (函数名):能够直接定位到函数定义的部分,展示文中的内容 其实想看到全文的内容也很简单,直接l 0,然后按回车键直到结尾就行 在Windows之下的vscode中,存在着F5...b n:在第n行打断点 b (文件):n :在指定文件的第n行打断点 b (函数名):在函数内部第一行打上断点 那我们怎么能够看得出来在哪里打的断点呢?

    15010

    GDB入门教程之如何使用GDB启动调试

    不管如何,也算是我自己的知识沉淀吧~ 我把公众号改名了,你们猜猜新名字是啥?...要使得 C 和 C++ 程序能在 GDB 下正常进行调试,必须在程序编译期间把基本的调试信息(如变量名、函数名、函数调用堆栈等)添加到可执行文件中。...当使用GDB加载不包含调试信息的二进制文件或进程时,GDB终端会提示错误信息:"no debugging symbols found"。...一、GDB调试未执行程序 对于本地的某个二进制文件 demo ( GDB 也支持远程调试),若其启动时不需要命令行参数,则可以在shell下使用命令 gdb demo 进入 GDB,并输入 run (缩写形式...对于使用多线程模式的进程,可以在 GDB 中使用 info threads 命令显示当前进程中所有线程的基本调试信息,包括:GDB 分配的线程ID、线程堆栈等。

    4.4K10

    GDB的那些奇淫技巧

    噢,断点都打不上,理由很简单,因为不同进程之间的虚拟地址空间都不一样。 另外一个回答中说了,虽然不能断在指定地址,但我们可以break main,告诉 gdb 把断点设置在 main 函数。...这也是我用了很久的一个方法,不过后来我知道了有更官方的解决方式: set follow-fork-mode child catch exec 囧,…… Catch Point真是个好东西,支持很多有用的事件...,在文末的附录中我也列举了一些比较常用的命令。...删除行号断点 clear basic.c:101 删除文件名和行号的断点 clear basic.c:main 删除文件名和函数名的断点 clear *0x00400448 删除内存地址的断点...info display 显示监视的表达式 show values 查看记录到打印历史中的变量的值 (gdb 4.0) info history 查看打印历史的帮助 (gdb 3.5) 文件操作

    1.3K20

    【Linux】调试器-gdb使用

    一、背景 程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g...选项  当我们不加 -g 选项的时候,我们生成的可执行文件的相关符号表中是没有debug信息的。...---- 二、使用 指令合集:  list(l) 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。 list(l)函数名:列出某个函数的源代码。...step(s):进入函数调用 break(b) 行号:在某一行设置断点 break 函数名:在某个函数开头设置断点 info break :查看断点信息。...info(i) locals:查看当前栈帧局部变量的值 quit:退出gdb 我们输入: gdb + 生成的可执行文件  来进行调试 进入之后我们查看代码输入:list 或者 l ,但此时是从后面代码开始查看

    3.2K50

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

    在代码中搜索字符串; - 缩小代码窗口; + 扩大代码窗口; gg 光标移动到文件头部; GG 光标移动到文件尾部; ctrl + b 代码向上翻一页; ctrl + u 代码向上翻半页; ctrl +...2、gdb调试操作 命令 作用 样例 list/l 显⽰源代码,从上次位置开始,每次列出 list/l 10 list/l 函数名 列出指定函数的源代码 list/l main list/l ⽂件名:行号.../b [⽂件名:]行号 在指定⾏号设置断点 break 10 break test.c:10 break/b 函数名 在函数开头设置断点 break main info break/b 查看当前所有断点的信息...backtrace/bt 查看当前执⾏栈的各级函数调⽤及参数 backtrace info/i locals 查看当前栈帧的局部变量值 info locals quit 退出GDB调试器 quit -...新增: b 行号/文件名:行号/函数名 if i == 30(条件) 给已有断点追加:condition 2 i==30, 其中2是已有断点编号,没有if

    7510

    【linux】gdb

    01.gdb使用 程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上...通过这个命令,你可以查看包含在 ELF 文件中的不同节(section),这些节可能包括代码段、数据段、符号表、字符串表等 #include int AddToTarget(int a...list/l: l文件名:行号/函数名,I行号/函数名 list/l 函数名:列出某个函数的源代码。 r或run:运行程序。...break(b) 行号:在某一行设置断点 break 函数名:在某个函数开头设置断点 info break ( i b ):查看断点信息。...until X行号:跳至X行 breaktrace(或bt):查看各级函数调用及参数 info(i) locals:查看当前栈帧局部变量的值 quit:退出gdb

    11610

    【Linux】深度解析与实战应用:GCCG++编译器入门指南

    函数库 我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实“printf”函数的呢?...在Debug模式下,编译器会生成包含大量调试信息的二进制文件,这些调试信息包括源代码的行号、变量名、函数名等,这些信息对于使用调试器(如GDB)来跟踪程序执行、检查变量值、设置断点等非常有用。...例如,在程序第10行设置断点: (gdb) b 10 或者,如果知道函数名,也可以直接在函数处设置断点: (gdb) break main 查看断点 使用info breakpoints命令这是查看断点信息的最直接方式...在GDB命令行中输入info breakpoints(或简写为info b),GDB会列出所有已设置的断点信息,包括断点的编号、类型、是否启用、地址以及断点所在的源代码位置等。...list/l 函数名:列出某个函数的源代码。 退出GDB 使用quit(简写为q)命令退出GDB。 【GDB的高级技巧】 条件断点 可以设置仅在特定条件下触发的断点。

    21810

    【调试】GDB使用总结

    \n", ptr, *ptr); print(x, ptr); return 0; } 设置断点 可以在函数名和行号等上设置断点。程序运行后,到达断点就会自动暂停运行。...格式 break 函数名 break 行号 break 文件名:行号 break 文件名:函数名 break + 偏移量 break - 偏移量 break * 地址 举例 (gdb) b print...o 显示为八进制数 t 显示为二进制数 a 地址 c 显示为ascii f 浮点小数 s 显示为字符串 i 显示为机器语言(仅在显示内存的x命令中可用) 显示内存 x命令可以显示内存的内容 格式 x...Saved corefile core.2380 有了内核转储文件,即使退出了GDB也能查看生成转储文件时的运行历史。...、 删除断点或禁用断点 clear clear 函数名 clear 行号 clear 文件名:行号 clear 文件名:函数名 delete [breakpoints] 断点编号 clear 用于删除已定义的断点

    1.6K20

    初识Linux · 有关gdb

    在linux中,gcc/g++编译代码默认是以release进行编译的,那么我们如何切换到debug模式呢?...首先进入调试很简单,就是gdb + 可执行文件。但是前提是已经用gcc -g生成了二进制的调试文件,此时才可以使用gdb进行调试。...还可以l 文件名:函数名,直接打印函数,也可以直接l 函数名: 好了,现在可以看到代码了,那么下一步是,如何打断点?...打断点用到的命令是Breakpoint,简称b,对应的操作有b 文件名:函数名/行号,或者直接b 函数名/行号: 那么断点就打好了,在VS里面,断点很显眼的来了个大红点,但是Linux中打了断点我们应该如何查看呢...此时就要info (信息),简称为i,i b即可: 但是呢,因为主函数本质是代码块,所以打在主函数的断点就是打在主函数的第一条可执行语句上,所以有两个会重复。 那么断点有了,我们如何删除呢?

    7410

    【探索 GDB 和 CGDB】:强大的调试工具介绍

    CGDB 提供了更加直观的视图和界面,使得调试过程更为高效。 1.2 两者各自的功能 【GDB 的主要功能】 启动程序:可以在 GDB 中启动程序,设置参数和环境变量。...上面的test.r 和 test.d 的调式版本只是给大家看一下,下面我们不做过多区分,统一用 test 可执行文件来替代。...调式指令 3.1 指令集 gdb binFile 退出: ctrl + d 或 quit 调试命令: 指令名 作用 l(list) 行号/函数名 显示对应的code,每次10行 r(run) F5【无断点直接运行...、有断点从第一个断点处开始运行】 b(breakpoint) + 行号 在哪一行打断点 b 源文件:函数名 在该函数的第一行打上断点 b 源文件:行号 在该源文件中的这行加上一个断点 info b 查看断点的信息...给已有断点追加 新增:b 行号/文件名:行号/函数名 if i == 30 (条件) 给已有断点追加:condition 2 i == 30, 其中 2 是已有断点编号,没有if 在此其他的指令我们就不过多讲解

    22310

    Linux下cgdbgdb调试以及关于操作系统那些事

    (隐式类型转换),在debug版本下会先产生临时变量,再赋值给目标对象;但是在release版本下就会优化为不产生临时变量 1.3gdb的使用 命令:gdb + 可执行程序 1.代码展示 lilst.../l +行号 展示该行源代码, list/l + 函数名 展示函数的源代码 在不加行号的情况下,每次l会列出10行,直到列完; 如果l +行号,就会把该行展示在中间部分, 2.执行语句操作 r...; 3.设置断点 break(b) 行号:在某一行设置断点 break(b) 函数名:在某个函数开头设置断点 info(i) break(b) :查看断点信息。...:启用断点 1.设置并查看断电 设置断点:b +行号/函数名 查看info b 2.关闭断点 disable + 断点编号 我们发现关闭断点之后keep处由y-->n;这就是断点开关标志...在过去我们写过很多的C/C++等文件,这些文件其实是在磁盘上存储的,磁盘是什么?

    7400

    GDB调试指南-变量查看

    前言 在启动调试以及设置断点之后,就到了我们非常关键的一步-查看变量。GDB调试最大的目的之一就是走查代码,查看运行结果是否符合预期。...准备工作 在查看变量之前,需要先启动调试并设置断点,该部分内容可参考《GDB调试指南-启动调试》和《GDB调试指南-断点设置》。后面的内容都基于在某个位置已经断住。..." (gdb) 当然有时候,多个函数或者多个文件会有同一个变量名,这个时候可以在前面加上文件名或者函数名来区分: (gdb) p 'testGdb.h'::a $1 = 11 (gdb) p 'main...'::b $2 = {1, 2, 3, 5} (gdb) 这里所打印的a值是我们定义在testGdb.h文件里的,而b值是main函数中的b。...查看内存内容 examine(简写为x)可以用来查看内存地址中的值。

    2.7K10

    【Linux】开始使用gdb吧!

    2 开始使用 首先进入gdb直接使用:gdb 文件名 接下来我直接给出 gdb 的 所有功能命令(注意简写形式,会经常使用): list /l 行号:显示指定行号附近的源代码,每次显示10行,从当前光标位置向下滚动...相当于 F9 break 函数名:在指定函数的开头设置断点。 info break:显示所有断点的信息。 finish:执行当前函数的剩余部分,直到函数返回,然后暂停程序。...ignore:忽略特定的断点。例如,ignore 1 main 会让断点1在主函数上失效 info(或i) breakpoints:显示当前设置的所有断点。...info(i) locals:显示当前函数栈帧中局部变量的值。 quit:退出GDB。...这是因为 gdb操作的应该是编译后的文件 当编译时,未加 - g 选项,则进入gdb环境中执行命令会出现No symbol table is loaded.

    44310
    领券