GDB+Jlink调试注意事项

2023-11-04

1.在汇编调用C的一步要用“Step in”,不要用“Step Over”,因为main对于汇编来说只是一个函数。会造成程序全速运行,不能单步调试。对于汇编代码,“Step in“Step Over”是一样的效果,所以在进行main函数之前最好都用“Step in”。


2. 在源代码中只修改了Makefile和链接脚本时候,要先清理一下再重新编译。因为make的潜规则是只检测源代码是否改变。会遇到如下提示:

**** Build of configuration Default for project mmuv1 ****


make all 
make: Nothing to be done for `all'.


3.Cannot access memory at address 0xbfea4450 和 0x00000000 in ?? () 

以前也遇到过这个问题,没有记录,最近一次遇到是在S5PV210上在写DDRAM初始化脚本的过程中遇到,并解决。是DDRAM没有完全初始化好。

见这里:http://my.csdn.net/kangear/code/detail/54584


4.Target request failed: Infinite loop detected


翻译过来就能理解,这是一个无限循环,再往下单步运行没有意义。就提示了如下信息。


5.gdbinit脚本中break _start设置断点,却没有设置到_start链接地址对应的行号,而是下一条指令对应的行号


解决过程:
       通过readelf -wl led.elf > led_elf.line的内容可以看到:
 Line Number Statements:
  Extended opcode 2: set Address to 0x20000000
  Special opcode 13: advance Address by 0 to  0x20000000 and Line by 8 to  9
  Special opcode 36: advance Address by 4 to  0x20000004 and Line by 3 to  12
  Special opcode 34: advance Address by 4 to 0x20000008 and Line by 1 to 13
  Special opcode 34: advance Address by 4 to 0x2000000c and Line by 1 to 14
  Special opcode 35: advance Address by 4 to 0x20000010 and Line by 2 to 16
  Special opcode 35: advance Address by 4 to 0x20000014 and Line by 2 to 18
  Special opcode 35: advance Address by 4 to 0x20000018 and Line by 2 to 20
  Advance PC by 12 to 0x20000024
  Extended opcode 1: End of Sequence
链接地址对应的行号是没有问题的,说明编译器没有问题。arm-linux-gdb发出的"break _start"应该也没有什么错误。jlinkGDBServer在处理结果上令人咋舌了。向后偏移了一条指令。
6.Cortex-A8在调试汇编时的“Step Over”
   Cortex-A8在调试汇编的时候,是支持的"Step Over","Step Into","Step Return",ARM9只有 "Step Into"的,"Step Over"和"Step Into"功能是一样的。
7.Remote connection closed
  调试时候会出现这个错误。
8.当你的程序不能停到断点处的时候,从以下两处找原因。
   1> 编译程序的时候是否加了-g,生成可调试的应用程序。否则arm-linux-gdb找不到调试的符号表。
   2> gdbinit脚本中是否有break

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

GDB+Jlink调试注意事项 的相关文章

  • 在 Linux 的 gdb 中启用 memleak 选项

    我试图查看哪个进程导致内存泄漏 并转储导致它的堆以查看问题所在 我应该在 gdb 中使用哪个命令来设置内存泄漏并检查堆 I tried gdb check leaks checkpoint can t find fork function
  • 用于 RHEL 的 gdb-multiarch

    我正在尝试寻找方法来运行gdb 多架构RHEL 中的命令 我已经安装了用于 ARM 处理的 QEMU 模拟器 我想安装GDB进行调试 我能够安装GDB 多体系结构在 Ubuntu 中运行命令成功 sudo apt get GDB multi
  • 将大核心文件转换为“minicore”文件

    如何将核心文件减少到仅线程堆栈 我希望能够运行 gdbthread apply all bt在迷你核心上 仅此而已 我正在处理大型 gt 4GB 多线程 Linux ELF 核心文件 这些文件太大而无法返回进行分析 我见过谷歌断点器 htt
  • 使用 gdb 在指定的可执行文件之外单步执行汇编代码会导致错误“无法找到当前函数的边界”

    我在 gdb 的目标可执行文件之外 甚至没有与该目标对应的堆栈 无论如何 我想单步执行 以便我可以验证汇编代码中发生了什么 因为我不是 x86 汇编方面的专家 不幸的是 gdb 拒绝进行这种简单的汇编级调试 它允许我设置并停止在适当的断点上
  • 如何知道gdb附加了哪个进程(stat: T)?

    当 gdb 附加进程时 该进程的 stat 为 T 例如 root 6507 0 0 0 0 67896 952 Ss 12 01 0 00 mytest root 6508 0 0 0 0 156472 7120 Sl 12 01 0 0
  • gdb:“未加载符号表”

    尝试在 gdb 中添加断点时 我不断收到此错误消息 我使用这些命令来编译 gcc g main c utmpib2 c o main o and cc g main c utmpib2 c o main o and also g g mai
  • 如何在 gdb 上进行 grep 打印

    有没有办法在 gdb 中 grep 打印命令的输出 就我而言 我正在使用 gdb 调试核心转储 并且我正在调试的对象包含大量元素 我发现很难寻找匹配的属性 即 gdb print this grep
  • “找不到 jar 文件系统提供程序”尝试使用 jdeps 和 jlink 创建收缩 Java 映像来运行 Minecraft

    我正在尝试使用以下命令创建一个收缩 Java 映像来运行 Minecraft 1 20 1 客户端jdeps and jlink 即只需要运行 Minecraft 所需的最少 Java 模块 但是我遇到了错误 我希望得到一些指导 这就是我所
  • 专门逐行调试

    我有一个用 Pascal 编写的脚本 我会以这种方式调试它 在每一行停止 转储内存中所有变量的值 然后转到下一行 是否可以使用 gdb 或其他 Linux 开源工具来完成此操作 使用选项编译文件 g fpc gpc g file pas R
  • gdb 通过指向错误的代码行显示不正确的回溯

    我们可以通过在源代码中包含多个中止调用 用非常简单的示例重现此问题 在下面的示例代码中 我们在不同条件下总共有四个中止调用 但是当我们使用优化标志 O3 进行编译时 我们只能看到一个中止调用的调试信息 因此 在这四个中止调用中发生崩溃时 g
  • 哪个信号被传递到信号处理程序中死锁的进程

    我有一个来自调用信号处理程序后死锁的进程的核心转储 如何确定传送了哪个信号以及是谁发送的 GDB 为接收信号的线程生成的回溯如下 信号处理程序在第 15 帧中被调用 gdb bt 0 0x00007fa9c204654b in sys fu
  • GDB错误:“进程记录:当前架构不支持记录功能”

    我正在尝试在 GDB 中进行反向执行 特别是target record按照说明在 gdb 中运行我的程序后here https stackoverflow com questions 1206872 go to previous line
  • 为什么 GDB 启动一个新的 shell 以及如何禁用此行为?

    我正在解决一个问题 即从 GDB 启动应用程序会导致符号查找错误 但从 shell 启动它却可以 事实证明 每当你从 GDB 中启动一个程序时 它都会启动一个新的 shell 从而覆盖我在启动 GDB 之前设置的所有环境变量 例如LD LI
  • gdb 不会从外部架构读取核心文件

    我正在尝试在 Linux 桌面上读取 ARM 核心文件 但似乎无法找出我的核心文件 有什么方法可以指示 gdb 我的核心文件是什么类型吗 file daemon daemon ELF 32 bit LSB executable ARM ve
  • 在 C 程序中追踪数组越界访问/写入的推荐方法

    考虑用 C 语言编写一些不太明显的算法的实现 例如 让它成为递归快速排序 我在 K N King 的 C 编程 现代方法 第二版 书中找到了它 可以从here http knking com books c2 programs qsort
  • Fortran 在 gdb 中打印可分配数组

    我正在向开源科学代码添加一些功能 我使用很多可分配项 但在正确打印它们时遇到一些问题 例如 我声明并分配 然后使用 real dp allocatable psi n phi some other stuff here allocate p
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 如何让 UIAutomation、模拟器和 Xcode 调试器同时运行?

    谁能向我指出有关如何使 Instruments 运行 UIAutomation 脚本并使用在模拟器中运行的调试器启动 iPhone 应用程序的文档 限制条件 我只有 iPhone 3g 硬件来测试和调试 而 UIAutomation 无法可
  • GDB命令了解程序是否正在运行或停止

    我正在尝试自动化 GDB 调试会话 我想知道 GDB 中是否有任何命令或任何其他方式可以帮助我知道程序是否正在运行或停止 Use gdb selected inferior threads 0 is running 来自 GDB Pytho
  • 如何在 VSCode 中配置调度程序锁定 gdb 选项

    我可以添加额外的参数launch json到 gdb 通过miDebuggerArgs https code visualstudio com docs cpp launch json reference midebuggerargs 像这

随机推荐

  • leetcode905–按奇偶排序数组(经典/原地排序)

    经典题目 给定一个非负整数数组 A 返回一个数组 在该数组中 A 的所有偶数元素之后跟着所有奇数元素 你可以返回满足此条件的任何数组作为答案 主要要掌握最优解 这道题很简单 类快排 你不是真正的快排 Note The returned ar
  • 如何为你的文本标签添加圆点、三角等不规则图形-保姆级教程

    1 通过无序列表 有序列表可以简单的生成带符号的文本 带符号的文本 https img blog csdnimg cn 9005611a7fa74d188ee071cd63fae0cf png 具体代码如下 h4 Disc 项目符号列表 h
  • Java实现内网穿透

    使用场景 1 当公司的一些系统功能使用了第三方服务时 通常第三方会回调我们的接口 在对接阶段 为了方便debug 我们肯定希望能回调到我们本地电脑上来 2 当你在公司想访问部署在家里电脑的服务或者文件时 3 当你的外地同事想访问你本地的服务
  • spring-boot-starter-data-mongodb 配置副本集读写分离、故障转移等

    一 为什么需要 MongoDB 副本集配置 副本集配置为数据库提供了高可用的保证 mongodb 副本集能够支持在主节点宕机的情况进行自动选主 同时利用多个从节点进行数据冗余 达到数据热备份的作用 同时由于数据同步 可支持读写分离 二 如何
  • es中must和should的组合查询

    使用must和should混用的时候 should不生效 列如 需要同时满足productRecomentd和location shold中满足一个条件就返回 经过多次测试 发现should不起效果 from 0 size 2 query
  • Java学习—字面常量值,变量,最终变量

    一 什么是字面常量值 他们是在程序中固定写死的的值 二 各种数据类型的表示 所有字符串类型的字面常量值必须加 所有char类型的字面常量值必须加 boolean类型的常量值只有两个 true false 浮点类型的常量值 没有加F或f的都是
  • unity 模型销毁_Unity3D常用 API 之实例化与销毁

    1 实例化游戏物体 1 1 游戏中的案例介绍 在很多 MMORPG 类的游戏中都有类似于 金钱副本 的副本关卡 在这类副 本中通常都是限定一个时间 在这个时间内玩家可以尽情的破坏 然后收集金钱 分析游戏截图讲解场景元素 见图 场景中所有的坛
  • latex 如何添加圆圈数字?

    众所周知 LATEX 提供了 textcircled 命令用以给字符加圈 但效果却不怎么好 实际上 加圈并不是一个平凡的变换 它会涉及到圈内字符形状的微调 而这是几乎无法在 TEX 宏层面解决的 因此 要得到比较好的效果 最好能使用预先设计
  • iwebsec靶场 文件包含漏洞通关笔记9-file://伪协议利用

    目录 前言 1 file协议 2 利用条件 1 file 用于访问本地文件系统 2 file 必须是绝对路径 第09关 file 伪协议利用 1 打开靶场 2 源码分析 3 获取 etc passwd渗透 前言 1 file协议 file协
  • QCQI学习笔记(1)

    Chapter I II overview of the quantum information probabilistic model qubit tensor product dirac notation Chapter III Sup
  • electron-上传文件,下载csv txt xlsx

    electron 主进程 渲染进程 在vue中调用接口 相互通信 csv txt 上传csv文件 将csv文件读取内容 iconv lite 解决读取内容乱码 xlsx 上传xlsx文件 xlsx文件内容读取 下载xslx文件 简单无样式的
  • 虚析构函数

    自动调用基类部分的析构函数对基类的设计有重要影响 删除指向动态分配对象的指针时 需要运行析构函数 在释放对象的内存之前清除对象 处理继承层次中的对象时 指针的静态类型可能与被删除对象的动态类型不同 可能会删除 实际指向派生类对象的基类类型指
  • Android 10 修改系统默认的字体大小

    代码路径 frameworks base core java android content res Configuration java frameworks base packages SettingsProvider res valu
  • 美团外卖智能陪伴型导购的探索与实践

    相比于其他电商场景 外卖场景对于实时发现和反馈用户兴趣的能力有着更高的要求 近年来 美团外卖算法团队摸索出了一套适用于外卖场景的智能陪伴型导购架构和策略 这一举措已经取得了显著成效 本文将详细介绍外卖搜索技术团队搭建智能陪伴型导购时 所遇到
  • 浅析深究什么是中间件

    本文发布于2009年10月30日 1 由来 因为工作的原因 我从金蝶集团调入金蝶中间件公司工作以来 经常遇到一个问题就是中间件公司是个什么公司 中间件是什么 金蝶不是做ERP的吗 怎么也做中间件 这是我以前在金蝶集团时无法想象的问题 因为金
  • R语言笔记四

    str function str Compacktly display the internal structure of an R object A diagnostic function and an alternative to su
  • AndroidUI库集合

    https hndeveloper github io 2017 github android ui html 进度条 https github com Vension V AndroidCollectSources
  • 双指针和递归

    一 双指针 1 给你一个n 给你n个数 再给一个val 去掉所有等于val的值 思路 当i和j位置都是非val值 i j 当i位置是val j 当i是val j是非val 交换 i j 当j走到最后一个位置的时候 停了 输出0 i位置的值
  • 量化术语速查表(持续更新)

    本文介绍一些量化投资相关术语 帮助大家更好地了解该行业 作者 bigquant 阅读时间 15分钟 本文由BigQuant宽客学院推出 难度标签 以下术语没有先后顺序 并将持续更新 金融相关 股票 股份公司发行的所有权凭证 债券 承诺按一定
  • GDB+Jlink调试注意事项

    1 在汇编调用C的一步要用 Step in 不要用 Step Over 因为main对于汇编来说只是一个函数 会造成程序全速运行 不能单步调试 对于汇编代码 Step in Step Over 是一样的效果 所以在进行main函数之前最好都