GDB 中断命令不会在命令文件中执行

2024-03-02

我有一个调试脚本,它执行以下操作:

  1. 设置两个断点。让我们称呼他们吧start and end断点。
  2. 启动后,脚本将继续执行,直到start命中断点。
  3. once start命中断点,我执行单步执行,直到end命中断点。

这是我的命令文件:

# end breakpoint
break 38
commands
    stop 1
    quit
end

# start breakpoint
break 50
commands
    set logging off
    set logging file log.txt
    set logging overwrite on
    set logging on
    printf "program counter: $pc"
end

continue

set $count = 0
set $steps = 15
while $count < $steps
    set $count = $count + 1
    next
end

为了澄清,一旦我开始调试会话,程序就会停止在开始处main;这就是为什么我有continue在脚本中跳转到start断点。

问题是只要命中断点,break 命令就不会被执行。这是我在控制台中得到的:

++next

Breakpoint 23, main () at ..\..\hello_world.c:50
50      test_byte++;
++set $count = $count + 1
++next
51      test_byte++;
++set $count = $count + 1
++next

控制台或日志文件中不会打印任何内容。但是,当我直接将相同的中断命令写入控制台并手动执行步骤时,它会起作用。

我正在使用 JLink 调试器和 openOCD 调试带有 RISC-V 的 VEGAboard。

Update:

我发现问题出在循环中的 next 上。因此,每当我摆脱循环并简单地对数量进行硬编码时next命令,break命令成功执行。

这种行为仍然很奇怪,我希望有人能给出解释。


None

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

GDB 中断命令不会在命令文件中执行 的相关文章

  • Microsoft Visual Studio 2012 无法在 C# 文件中设置断点

    我安装了 Microsoft Visual Studio Professional 2012 版本 11 0 60610 01 Update 3 调试 C cs 文件时 当我尝试设置断点时 Visual Studio 会显示以下消息 无法在
  • gdb 通过指向错误的代码行显示不正确的回溯

    我们可以通过在源代码中包含多个中止调用 用非常简单的示例重现此问题 在下面的示例代码中 我们在不同条件下总共有四个中止调用 但是当我们使用优化标志 O3 进行编译时 我们只能看到一个中止调用的调试信息 因此 在这四个中止调用中发生崩溃时 g
  • 当条件满足时如何进入调试模式?

    有没有办法在满足一定条件时进入调试模式 例如 假设我想在以下行进入调试模式i 1变为真 using System namespace ConditionalDebug public class Program public static v
  • 如何在 Rust 中使用 cfg 检查发布/调试版本?

    使用 C 预处理器很常见 if defined NDEBUG release build endif if defined DEBUG debug build endif Cargo 的大致等价物是 cargo build release以
  • 生成转储并导致非托管代码崩溃?

    当我的应用程序突然崩溃时 有没有办法获得完整的故障转储 问题是 我怀疑这是由于非托管代码杀死了 net 框架本身 因此 除非在崩溃时应用程序附加了调试器 否则应用程序甚至没有机会处理崩溃 我无法附加调试器并等待 因为崩溃是随机发生的 而且我
  • emacs 的最佳 java 工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Chrome 的萤火虫

    谁能推荐一个类似于 Firebug 的不错的 Google Chrome 扩展程序 我确实看到这里有几个类似的问题 但答案似乎非常过时 Thanks It s built in Press Ctrl Shift I Or Tools gt
  • 在 Visual Studio 中调试时向后拖动指令指针

    如需演示 请查看 基本上 我知道这在 Visual Studio Community Edition 2015 中是可能的 我想知道 a 这与 Intellitrace 和 历史调试 有关吗 b 这样做会有副作用吗 或者这只是将指令向后移动
  • 在 Visual Studio Code 中找不到“调试:评估”的 CommandID

    我想在 Visual Studio Code 中添加命令 调试 评估 的键盘快捷键 不幸的是 命令 调试 评估 的命令 ID 没有记录 有人知道在哪里可以找到 commandId 吗 editor debug action selectio
  • 如何调试(最好在 IDE 中)MSBuild 脚本?

    我们非常广泛地使用 MSBuild 作为我们持续集成过程的一部分 虽然它非常强大 我们几乎可以在其中完成所有构建 测试和部署 利用一些自定义任务 我们发现使用标签对其进行调试是一种痛苦 并且不能总是为我们提供足够的信息 我发现 http w
  • 如何修复错误“无法连接到远程进程。正在中止调试会话。”更新到 Android Studio 4.2.1 后

    我将 Android studio 更新到 4 2 1 但没有进行调试 但我无法执行此操作 因为此消息正在等待应用程序上线 com example myapplication com example myapplication test 一
  • php:不知从何而来的空行

    我有奇怪的错误 不知道如何解决它而不浪费太多时间 我的控制器中有一个方法 应该使用以下方法返回 xml header Content type text xml header Content Disposition attachment f
  • 调试 Android 库中的本机代码

    我的工作空间布局是 ApplicationLibrary AndroidManifest xml jni libs src Application AndroidManifest xml ant properties 如何在 Eclipse
  • C# 编译器如何删除发布版本中的 Debug.Assert?

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

    我正在运行 ruby debugbundle exec rdebug script server在 Rails 2 3 上 当我按下Ctrl C 它退出整个程序和调试器 我希望它停止执行程序并将我带入调试器会话 I tried catch
  • 防止GDB中的PLT(过程链接表)断点

    在最新版本的 GDB 中 在库函数调用上设置断点会导致多个实际断点 调用过程链接表 PLT 实际的函数调用 这意味着当调用库函数时 我们每次都会经历两次中断 在以前的 GDB 版本中 只会创建 2 因此您只能得到一次中断 那么问题来了 是否
  • gdb 中的 是什么意思?

    gdb n 134 a b c 0xdeadbeef uint32 t length initval gdb n gdb p a 30
  • 在 Visual Studio 中方法的返回行上检查函数的返回值

    我有一行这样的代码 return foo barIn 如果我在该行上放置一个断点 我可以检查 foo barIn 的返回值而不单步执行 foo 吗 我可以将代码重写为 var result foo barIn return result 但
  • gdb 不会从外部架构读取核心文件

    我正在尝试在 Linux 桌面上读取 ARM 核心文件 但似乎无法找出我的核心文件 有什么方法可以指示 gdb 我的核心文件是什么类型吗 file daemon daemon ELF 32 bit LSB executable ARM ve
  • Intellij IDEA 断点停止在 JAR 中,而不是我的项目的源代码中

    我在 java 文件中设置了一个断点 我通过 maven jetty 插件启动了 jetty 我设置断点的java文件也打包成JAR了 Intellij 在断点处停止 但它显示了打包到 JAR 中的文件而不是 java 文件 它的行为就像我

随机推荐

  • 在 iOS 上的多个应用程序之间共享数据

    我知道这方面有很多线程 但似乎没有一个能满足我想要寻找的内容 这是我的限制 不是使用私有 API 框架或未记录的黑客行为 目录访问可能会带来应用程序被拒绝的风险 因为那个 能够在不同的地方共享数据 供应商 应用程序开发商 数据可以在生命周期
  • 如何让等待栏在 Matlab 中工作?

    我希望为需要相当长一段时间的操作提供等待时间 这是我的代码 h waitbar 0 Please wait for i 1 counterend waitbar i waitbarcounter Atemp At i step handle
  • 如何仅使用键在 vs code 中的当前资源管理器目录中创建文件?

    就像在 vim nerd 树插件中一样 当您在 vim nerd 树中按 m 然后按 a 按钮时 您可以在光标位于 Nerd 树上的当前目录中添加文件 可以在vs code中实现吗 也许一些插件 不幸的是 还没有这样的插件 但你可以定义一些
  • 如何组合验证属性错误消息的资源字符串?

    如果我在验证属性上收到错误消息 例如 名字为必填项 姓氏为必填项 然后是这样的验证属性 Required ErrorMessageResourceName Error FirstNameRequired ErrorMessageResour
  • 在 swt 中归档的多行文本上使用 Tab 键吗?

    如何防止多行文本字段 窃取 Tab 键按下 我的意思是 我想使用 TAB 在窗口的元素之间循环 但是当我输入多行文本时 TAB 变成 普通 键 并且只需将制表符插入到我正在键入的文本中 我该如何处理这个问题 我应该编写一些自定义侦听器 还是
  • 过滤最接近给定日期时间的日期时间

    我有一个具有日期时间字段的模型 现在给定一个特定的日期时间 DT 我需要获取日期时间最接近 DT 的对象 这可能吗 Thanks 您可以通过两个查询和一些逻辑来获取它 这个想法是找到紧随目标日期时间之后的一个对象和紧邻目标日期时间之前的一个
  • 训练神经网络技巧

    对于对象识别 我建议使用 MATLAB 中的神经网络 我有 30 个对象 每个对象有 20 个图像 因此我有 600 个输入数据和 20 个不同的类 输入矩阵为 100x600 目标矩阵为 1x600 输入矩阵列是 100 个 bin 中关
  • WSO2 IS 使用 Radius / Kerberos 登录

    下图显示了我需要部署的架构 它解释了我的问题 我已经设计了一个子系统 其中包含部署在apache tomcat中的一组应用程序 Web服务 Web应用程序 为了向我的子系统提供 SSO 功能 我使用带有 SAML2 0 的 WSO2 身份服
  • 使用 CodeIgniter 进行用户身份验证

    我正在使用 PHP 编写一个 Web 应用程序 我想为此使用 MVC 模式 并决定使用代码点火器 http codeigniter com 我的应用程序将有一些页面需要身份验证 而有些页面则不需要 我想以一种非常通用的方式设计它 这样就不会
  • Asp.Net 中动态添加的控件

    我正在尝试了解 asp net 我有一个长期的 php 开发人员背景 但我现在面临着学习 asp net 的任务 并且我在这方面遇到了一些麻烦 这很可能是因为我试图迫使框架去做一些它不适合的事情 所以我想学习如何 以正确的方式 做到这一点
  • 如何在 h:selectOneMenu 中的值更改时执行转换?

    通常我会做如下的事情 单击按钮执行转换
  • 全局名称“re”未定义

    我是 python 新手 正在研究 mincemeat 的地图减少问题 运行 mincemeat 脚本时出现以下错误 python mincemeat py p changeme localhost error uncaptured pyt
  • Javascript 和 Howler.js - 如何选择随机声音?

    我对 javascript 相当陌生 并尝试在 mousemove 上播放随机选择的声音 我无法上班 希望得到帮助 我使用 howler min js 来控制声音 因此不会等到声音播放结束才播放下一个声音 这是代码 var soundObj
  • 在 Swift 中生成字符串的自定义长度哈希值

    是否有可能以某种方式将长度为 n 的给定字符串 哈希 为任意长度 m 的哈希值 我想实现如下目标 let s1
  • 在Python中输入一个文本文件并写入多个输出文件

    大家好 我正在输入 filename txt 并生成多个输出文件 filename1 txt filename2 txt 和 filename3 txt 更具体地说 这是 filename txt 中的输入数据 Time ms Channe
  • rvm 无法再在 Mac OS X Mountain Lion 上安装 1.8.7-p352

    我将 rvm 升级到 1 15 8 然后在 zsh 出现一些问题后又降回 1 15 7 降级后 我的 Ruby 1 9 版本恢复正常 但 1 8 7 无法再次安装 出现两个错误 Error running patch F 25 p1 N f
  • Fabric JS 通过 ID 以编程方式选择对象

    在 Fabric JS 中 我需要通过给定的对象名称 ID Circle 来选择对象 var onCircle function canvas add new fabric Circle id Circle radius 30 fill f
  • 使用分数的模算术

    我陷入了这个使用整数和分数模 10 相乘的密码学问题 这是等式 7 4 11 mod 10 我知道我应该将其转换为整数 因为 mod 运算符不适用于分数 但我无法弄清楚这一点 明显地 7 4 11 28 11 但我无法得到分数的 mod 1
  • JQuery.validate - 仅关于模糊的一条规则;其余的应该正常吧?

    我已经用小提琴来展示我试图为我的用户 ID 字段执行的简单验证 使其成为必需 尽可能积极地验证 设置最小长度 尽可能积极地验证 设置最大长度 尽可能积极地验证 运行 AJAX 调用以确保用户 ID 不存在 我只想在模糊时运行它 我没有使用
  • GDB 中断命令不会在命令文件中执行

    我有一个调试脚本 它执行以下操作 设置两个断点 让我们称呼他们吧start and end断点 启动后 脚本将继续执行 直到start命中断点 once start命中断点 我执行单步执行 直到end命中断点 这是我的命令文件 end br