使用 gdb 中的函数调用堆栈进行导航

2024-01-11

在 Visual Studio 中,如果单击调用堆栈中的某个条目,则会打开编辑器并显示该函数的源代码。 gdb 中可能有类似的东西吗?我在 gdb 中使用 tui(文本用户界面)。是否可以让 tui 显示回溯中给定条目的源代码?

如果没有,那么如何利用回溯中的信息?您是否手动打开文件并导航到正确的行?


当你停下来时gdb(在任何模式下)在断点中并且可以看到回溯backtrace or where命令、使用up and down命令专注于回溯的不同功能(框架)。

您可以使用up 2向上移动两帧。list命令将显示当前帧周围的源行。

我认为,tui 会在之后更改当前显示的函数/寄存器up/down命令;并且tui中不能有点击式回溯(tui中是否支持鼠标?)。仅记录了 tui 的窗口https://sourceware.org/gdb/onlinedocs/gdb/TUI-Commands.html https://sourceware.org/gdb/onlinedocs/gdb/TUI-Commands.html

源窗口、汇编窗口和命令窗口。

TUI 中有更改当前帧的按键,但在普通 TUI 模式下没有(https://sourceware.org/gdb/onlinedocs/gdb/TUI-Keys.html https://sourceware.org/gdb/onlinedocs/gdb/TUI-Keys.html),这样就可以使用gdb的文本命令了。

还有“TUI 单键模式”,通过以下方式激活Ctrl-x s,该模式下有向上/向下命令:u/d and w获得回溯。该模式记录在https://sourceware.org/gdb/onlinedocs/gdb/TUI-Single-Key-Mode.html#TUI-Single-Key-Mode https://sourceware.org/gdb/onlinedocs/gdb/TUI-Single-Key-Mode.html#TUI-Single-Key-Mode:

25.3 TUI 单键模式

 w    where
 u    up
 d    down
 r    run
 s    step
 n    next
 c    continue
 f    finish
 q    exit the SingleKey mode.
 v    info locals

其他键暂时切换到 gdb 命令提示符。按下的键将插入编辑缓冲区中,以便可以键入大多数 gdb 命令,而无需与 TUI SingleKey 模式交互。输入命令后,TUI SingleKey 模式将恢复。永久离开此模式的唯一方法是输入q or C-x s.

您还可以尝试一些带有 GUI 的调试器(gnu ddd https://en.wikipedia.org/wiki/Data_Display_Debugger or KDbg http://www.kdbg.org/),或大多数 Linux IDE 中内置的任何其他 gdb 包装器(list https://stackoverflow.com/questions/24109/c-ide-for-linux, 维基列表 https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments#C.2FC.2B.2B:Eclipse、Netbeans、CLion、KDevelop、Code::Blocks、CodeLite,...)。它们都更加现代并且方便调试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 gdb 中的函数调用堆栈进行导航 的相关文章

  • 如何修复错误“无法连接到远程进程。正在中止调试会话。”更新到 Android Studio 4.2.1 后

    我将 Android studio 更新到 4 2 1 但没有进行调试 但我无法执行此操作 因为此消息正在等待应用程序上线 com example myapplication com example myapplication test 一
  • Eclipse 调试模式下的 GDB 找不到 stdlib/rand.c

    我试图让 gdb 在 ubuntu 上与 eclipse cdt 一起运行 以开始调试一些简单的程序 所以我做了我认为必要的步骤来让它运行 1 创建可执行项目 2 Compile 3 Run 4 创建文件 gdbinit 并将其放在主项目文
  • 如何从 obj-c / ios 中的堆栈跟踪获取源代码行

    I use NSSetUncaughtExceptionHandler将堆栈跟踪打印到 iPhone 中的本地文件 该文件将在下次应用程序启动时发送到我们的服务器 然后我可以检查异常数据并修复错误 在某些崩溃中 我有模块名称和引发异常的函数
  • 代码::块 - 警告:GDB:无法设置控制终端:不允许操作

    我已经通过官方存储库在 Ubuntu 14 04 中安装了 Code Blocks 13 12 当我编译时 一切正常 但是当我调试时 shell 中会显示以下消息 警告 GDB 无法设置控制终端 操作不正确 允许的 程序执行到断点 但当我执
  • C# 编译器如何删除发布版本中的 Debug.Assert?

    我最近正在浏览一些代码 并考虑是否需要小心放置在其中的表达式Debug Assert语句 例如昂贵的操作或具有副作用的操作 然而 编译器似乎非常聪明地完全删除了Assert陈述和内在表达 例如 以下内容只会在调试版本上打印 static v
  • valgrind 和 iOS SDK 4.2?

    使用 valgrind 运行 iOS 4 2 应用程序时遇到问题 我从 Macports 安装了 valgrind 3 6 0 SVN Xcode 3 2 5 当我修改 main 以运行 valgrind 时 我得到以下输出 Detecte
  • 批评我的非侵入式堆调试器

    这是后续批评我的堆调试器 https stackoverflow com questions 2830272 critique my heap debugger从昨天 根据 bitc 的建议 我现在将有关已分配块的元数据保存在单独的手写哈希
  • 如何轻松调试布局 Xml 警告/错误?

    我陷入了这个错误 Warning simplexml load string Entity line 46 parser error Comment not terminated in lib Varien Simplexml Config
  • 当我使用nodemon和ts-node时,为什么节点检查器没有启动?

    我有一个用打字稿编写的简单节点服务器 我的 package json 配置为 scripts build tsc dev nodemon watch src e ts json exec ts node src server ts debu
  • 具体什么是调试呢?

    什么是调试代码 我该如何进行 调试 http en wikipedia org wiki Debugging是确保您的代码不包含任何内容的过程bugs http en wikipedia org wiki Software bug 或至少尽
  • 使用 Visual Studio Tools for Docker 部署和调试远程 Linux Docker 容器

    我试图弄清楚如何使用部署到远程容器适用于 Docker 的 Visual Studio 工具 并调试我的 ASP NET Core 应用程序 实际上 我正在以下场景中工作 我的开发机器是 Hyper V 虚拟机 Docker is inst
  • 无法在 Eclipse 中连接到虚拟机

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 当我尝试在 Eclipse 上调试任何项目时 我突然开始遇到这个奇怪的错误 我不记得有什么改变让这个问题突然出现 Launch
  • Xcode“使用性能工具运行”被禁用?

    我正在尝试从我的 Xcode 项目中查找内存泄漏 我不知道发生了什么 我无法选择任何内容Run gt Run with performance tool 事物列表被禁用 请帮助我 我是初学者 问题是我已经删除了构建文件夹并尝试使用性能工具运
  • gcc 中 -g 选项的作用是什么

    我看到很多关于 gdb 的教程要求在编译 c 程序时使用 g 选项 我无法理解 g 选项的实际作用 它使编译器将调试信息添加到生成的二进制文件中 此信息允许调试器将代码中的指令与源代码文件和行号相关联 拥有调试符号可以使某些类型的调试 例如
  • 如何调试 numpy 掩码

    这个问题与this one https stackoverflow com q 73672739 11004423 我有一个正在尝试矢量化的函数 这是原来的函数 def aspect good angle float planet1 goo
  • 在 Visual Studio 中调试非托管 C++ 图像

    我确实在 Visual Studio 2010 下的非托管 C 上编写了大量图像处理代码 其中涉及许多不同的图像 我希望能够在逐步调试时像简单标识符一样轻松地观看它们 我当前的解决方案是使用一些在 Matlab 控制台中导出图像的函数 可以
  • VS2010 RC - 调试器中只有 100 个 std::map 元素

    当我想查看 std map 容器的所有元素时 在 VS 2010 RC 中调试我的应用程序时遇到一个小问题 当调试器到达断点并且我想检查元素检查器中的映射值 在 本地 窗口中以及用鼠标悬停变量名称后的弹出窗口中 并且我正在向下滚动列表元素它
  • :target 伪类在 Firefox 中无法正常工作

    我正在使用 target 伪类制作一个具有 CSS 灯箱类型效果的页面 当您单击图像时 会弹出一个包含信息的框 当您单击任意位置时 该框会再次消失 它在 Chrome 和 IE 中运行良好 但在 Firefox 中存在一个奇怪的错误当您将鼠
  • 直接在 ARM 目标上调试单声道应用程序

    我最近在 BeagleBone 嵌入式 ARM 设备上安装了 Mono 希望通过 USB 连接 Kinnect 传感器并使用 C Mono 控制它 我想知道 Mono 我正在使用 MonoDevelop 但我想这个问题也适用于 VS 是否允
  • 调试 Java InterruptedException,即查找原因

    在调试Android应用程序时 有时中断异常发生并使应用程序崩溃 我已经能够在默认异常处理程序上设置断点 但调用堆栈不提供信息 at java util concurrent locks AbstractQueuedSynchronizer

随机推荐

  • 类型错误:无法使用灵活类型执行reduce

    我一直在使用 scikit learn 库 我正在尝试使用 scikit learn 库下的高斯朴素贝叶斯模块 但遇到以下错误 类型错误 无法使用灵活类型执行reduce 下面是代码片段 training GaussianNB traini
  • C# 编译器结果在内存中生成?

    我一直在关注这个StackOverflow问题 https stackoverflow com questions 2830160 c sharp referencing a type in a dynamically generated
  • mod_rewrite 规则删除 #!来自网址?

    我正在构建一个带有ajax加载的javascript应用程序 如果任何用户访问其中包含hashbang的URL 我想重写该URL并将其删除 我对 mod rewrite 不太熟悉 但我尝试了一下 RewriteCond REQUEST UR
  • 使用 ggplot 或 R 中的任何其他方法根据计数绘制线宽(大小)

    我有一个长格式的数据集 每个ID 走 3步 每一步 变量名称是step 可以降落在不同的位置 变量名称是里程碑 我想绘制所有路径 因为有一些路径的行进次数较多 所以我想让路径的宽度 大小 与其计数成正比 我想象它是这样的geom line
  • 移动浏览器检测和格式化的最佳实践

    我为一位希望可以通过移动设备轻松访问的客户开设了一个小型网上商店 如何检测用户是否通过移动设备浏览我的网站 当我这样做之后 我应该 检查用户是否有移动设备 然后将其转发到另一个站点 我认为优点是 我可以优化两个网站的屏幕尺寸布局 我可以在两
  • Facebook API 密钥?与应用程序 ID 相同吗?

    我已经通过 facebook 为我的网站设置了一个应用程序 与我在网络上看到的显示 API 密钥的其他屏幕截图不同 我没有 我显示的只是 应用程序 ID 后面跟着 应用程序秘密 所以想知道应用程序 ID 是否与 API 密钥相同 因为我正在
  • 在 Swift 中制作简单的淡入淡出动画?

    我正在尝试用 Swift 制作一个简单的动画 这是淡入 我尝试过 self myFirstLabel alpha 0 self myFirstButton alpha 0 self mySecondButton alpha 0 然后 我有
  • 将 Post 或 PostAndAsyncReply 与 F# 的 MailboxProcessor 一起使用吗?

    我见过不同的片段展示了Put返回的消息unit与 F 的MailboxProcessor 在某些情况下 仅Post方法被使用而其他人使用PostAndAsyncReply 一旦消息被处理 回复通道立即回复 在进行一些测试时 我发现等待回复时
  • Android Wear 设备选择框显示“offline localhost:4444 minSdk (API 20) > deviceSdk (API 1)”

    我正在尝试构建 Android Wear 应用程序 如果我将 minsdk 设置为 20 21 它给出了下面的错误 但如果我将其设置为 19 则会出现以下错误 home bhupinder AndroidStudioProjects MyW
  • 如何通过每种颜色的分数贡献在 n 种颜色之间进行插值?

    我怎样才能在n种颜色之间进行插值 2种颜色的简单情况 首先考虑一个更简单的情况 我们想要找到两种颜色的中点 Color1 is RGB 255 0 0 Red Color2 is RGB 128 128 128 Grey 解决方案是单独考虑
  • 如何向用户实施有限的功能推出(与语言无关)?

    我想知道向选定的用户群推出新网站功能的一些常见或最佳实践 例如 用户可以仅基于总体用户群的百分比 10 部署应该是可定制的 可配置的 并支持任意数量的功能 将部署与特定用户角色或权限 ACL 相关联也很有用 那么 从本质上讲 什么是能够很好
  • @font-face 不起作用

    我下载了一个字体inlove light wf ttf 为了使用该规则 font face 我的文件夹中有 home html and inlove light wf ttf 在我的 CSS 中我有 font face font famil
  • 如何测试“Mosquitto”服务器?

    我是新来的Mosquitto and MQTT 我下载了Mosquitto服务器库 但我不知道如何测试它 有什么办法可以测试一下Mosquitto server 在单独的终端窗口中执行以下操作 启动代理 mosquitto 启动命令行订阅者
  • 我可以将实体字段名称映射到 TypeORM 中的别名列名称吗?

    我正在使用 TypeORM 从 Rails 迁移到 NestJs 由于历史原因 Rails 中的表名和列名是snaked cased 我不想将这种麻烦复制到我们的 NestJs React 端 我可以在 NestJS typeorm 中创建
  • 使用新范围更新 Google 工作表“过滤器视图”

    我有一个电子表格 其中设置了各种过滤器视图 通常这很有效 但偶尔会添加新行 我必须手动更新每个过滤器视图中的范围 我尝试在线搜索解决方案 并提出了以下可能更新范围的代码 function UpdateFilterView var dataS
  • xcode4 工作区中的两个项目(#import 失败)

    我真的很难让它在 xcode 4 中工作 我有一个项目将在许多应用程序 网络 中重用 因此我创建一个工作区并添加我的两个项目 到目前为止 一切都很好 这就是失败的地方 import JSONRequest h 没有明显的原因 它自动完成头文
  • 在单个表列中存储多个位值

    我需要在数据库中存储某种一周中的日程安排 我可以在其中安排一周中的一天或多天的记录 假设它代表一个任务 我需要将其存储在一列中 以便于保存和检索 然后每天我都会选择时间表与本周的当前日期相匹配的记录 例如 获取时间表与第 7 周的日期相匹配
  • 内部矩阵尺寸必须一致

    我有一个矩阵A和一个向量x A是一个 50x30 矩阵 x是一个 1x30 向量 我想要倍增A by x 但每当我尝试z A x我收到错误Inner matrix dimensions must agree 然而 在列数相同的情况下 矩阵维
  • Elasticsearch Painless 计算嵌套元素的分数

    Note 我最初发布这个问题的方式有点不同 不值得更新 因为阅读后我学到了更多 要求 搜索文档并根据文档中的嵌套元素计算自定义分数 结构 mappings book properties title type string index no
  • 使用 gdb 中的函数调用堆栈进行导航

    在 Visual Studio 中 如果单击调用堆栈中的某个条目 则会打开编辑器并显示该函数的源代码 gdb 中可能有类似的东西吗 我在 gdb 中使用 tui 文本用户界面 是否可以让 tui 显示回溯中给定条目的源代码 如果没有 那么如