ARM GDB只能在Linux上无法访问内存

2024-01-04

尝试将开发切换到 Linux,但遇到了一个(可能是简单的新手)问题。在我的 Mac 上,我可以使用 ARM GDB (arm-eabi-none-gdb从 GNU ARM 嵌入式工具链)加载我的elf到我的STM32L432,然后在我的断点处一个简单的i lo(或检查,或其他什么)给我本地变量。然而,在 Linux 上,完全相同的代码给出了如下所示的内容:

cr1 = <error reading variable cr1 (Cannot access memory at address 0x2000fff4)>

我应该做一些不同的事情来正确映射内存吗?

编辑:我想我今天会再次开始整个 SRAM 块的内存转储(数据表 RM0394 第 63 页),看看是否存在一些偏移(可能是某种我不知道的内存别名),但即使是dump命令受阻:

(gdb) dump ihex memory result.bin 0x20000000 0x40000000
Cannot access memory at address 0x2000c000

这在我的 Mac 上不会发生,而且我可以在示波器上看到我正在寻找的数据(与使用示波器调试软件不同),因此问题不在于 SRAM,而在于gdb.

对于投票结束的人,您能否具体说明这在哪些方面是偏离主题的?我正在使用单步执行代码gdb我提到的几乎所有内容都有标签,这让我相信这是一个适合提问的地方。我并不是在请求“调试帮助”,就像“帮助调试特定代码”一样,我是在请求在一些常见设备上使用非常广泛使用的调试器的帮助。


对于将来遇到此问题的任何人(sc.我自己),问题是 gdb 没有跟踪包括我的 SRAM 的内存区域(viz.0x2000c000 至 0x40000000)。解决方法是手动设置内存区域。

Before:

(gdb) info mem
Using memory regions provided by the target.
Num Enb Low Addr   High Addr  Attrs 
0   y   0x00000000 0x00040000 ro nocache 
1   y   0x08000000 0x08040000 flash blocksize 0x800 nocache 
2   y   0x1fff0000 0x1fff7000 ro nocache 
3   y   0x1ffff800 0x1ffff810 ro nocache 
4   y   0x20000000 0x2000c000 rw nocache 
5   y   0x40000000 0x5fffffff rw nocache 
6   y   0xe0000000 0xffffffff rw nocache

After:

(gdb) mem 0x2000c000 0x40000000 32 rw
(gdb) info mem
Using user-defined memory regions.
Num Enb Low Addr   High Addr  Attrs 
0   y   0x00000000 0x00040000 ro nocache 
1   y   0x08000000 0x08040000 flash blocksize 0x800 nocache 
2   y   0x1fff0000 0x1fff7000 ro nocache 
3   y   0x1ffff800 0x1ffff810 ro nocache 
4   y   0x20000000 0x2000c000 rw nocache 
1   y   0x2000c000 0x40000000 rw 32 nocache 
5   y   0x40000000 0x5fffffff rw nocache 
6   y   0xe0000000 0xffffffff rw nocache

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

ARM GDB只能在Linux上无法访问内存 的相关文章

  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f
  • 如何修复错误:“检测到无法访问的代码”

    我有以下代码 private string GetAnswer private int CountLeapYears DateTime startDate return count String answer GetAnswer Respo
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • MVC 5 中具有 ASP.NET Identity 的 Autofac 不会验证 OWIN 管道中的安全标记

    我在 MVC 5 中设置了 AutoFac 来与 ASP NET Identity 一起使用 表面上一切似乎都工作正常 即用户可以创建帐户并登录 但后来我发现 当安全标记更改时 用户不会注销 通过在 AspNetUsers 表中进行暴力破解
  • ARM Cortex-M3 启动代码

    我试图了解 STM32 微控制器的 Keil realview v4 附带的初始化代码是如何工作的 具体来说 我试图了解堆栈是如何初始化的 In the 文档 http infocenter arm com help index jsp t
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he
  • Unity手游触摸动作不扎实

    我的代码中有一种 错误 我只是找不到它发生的原因以及如何修复它 我是统一的初学者 甚至是统一的手机游戏的初学者 我使用触摸让玩家从一侧移动到另一侧 但问题是我希望玩家在手指从一侧滑动到另一侧时能够平滑移动 但我的代码还会将玩家移动到您点击的
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 来自嵌入图像的 BitmapSource

    我的目标是在 WPF 窗口上重写 OnRender 方法中绘制图像 someImage png 它是嵌入资源 protected override void OnRender System Windows Media DrawingCont
  • LinkLabel 无下划线 - Compact Framework

    我正在使用 Microsoft Compact Framework 开发 Windows CE 应用程序 我必须使用 LinkLabel 它必须是白色且没有下划线 因此 在设计器中 我将字体颜色修改为白色 并在字体对话框中取消选中 下划线
  • 如何防止 Blazor NavLink 组件的默认导航

    从 Blazor 3 1 Preview 2 开始 应该可以防止默认导航行为 https devblogs microsoft com aspnet asp net core updates in net core 3 1 preview
  • gdb 脚本:在选定的断点处执行命令

    我想在 gdb 脚本中预定义一些断点 并在这些断点处调用一些特殊命令 然后自动继续程序执行 因此 理想情况下 我想要一个如下所示的 gdb 脚本 b someFunction if breakpoint from above reached
  • C++ 指针引用混淆

    struct leaf int data leaf l leaf r struct leaf p void tree findparent int n int found leaf parent 这是 BST 的一段代码 我想问一下 为什么
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 如何获取带有某个属性注释的所有属性?

    我刚刚从 Roslyn 开始 我想找到所有用属性名称 OneToOne 注释的属性 我启动了 SyntaxVisualizer 并能够获取对该节点的引用 但我想知道是否有更简单的方法来实现此目的 这就是我所拥有的 var prop docu
  • Fedora dnf 更新不起作用?

    当我尝试使用 update 命令更新 Fedora 22 时 sudo dnf update 我收到以下错误 错误 无法同步存储库 更新 的缓存 无法准备内部镜像列表 Curl 错误 6 无法解析主机名 无法解析主机 mirrors fed
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • .Net Reactive Extensions Framework (Rx) 是否考虑拓扑顺序?

    Net 反应式扩展框架是否按拓扑顺序传播通知以最大限度地减少更新量 就像 Scala Rx 所做的那样 Net 反应式扩展 Rx 是否可以 https github com lihaoyi scala rx wiki How it Work
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调

随机推荐

  • 如何使用PHP连接到as400

    我正在尝试使用以下代码将我的 AS400 与 V5R3 和 PHP 连接
  • 如何将打开的窗体定位在 C# Windows 窗体中的特定位置?

    The Location窗体中的属性设置为 0 0 属性窗口 但是 该表单不会在指定位置打开 我错过了什么吗 你需要设置StartPosition手动使表单将起始位置设置为中的值Location财产 public Form1 Initial
  • 在 Python 中将字符串分配给 ID

    我正在使用 python 读取一个文本文件 其格式为每列中的值可以是数字或字符串 当这些值是字符串时 我需要分配该字符串的唯一 ID 在同一列下的所有字符串中都是唯一的 如果同一字符串出现在同一列下的其他位置 则必须分配相同的 ID 什么是
  • Retrofit 2 同步调用错误处理 4xx 错误

    我正在使用 android priority jobqueue 并使用改造来同步调用我的其余 api 但我不确定如何处理诸如 401 Unauthorized 错误之类的错误 我会发回 json 来说明错误 进行异步调用时很简单 但我正在调
  • htonl() 是否会更改 BIG ENDIAN 机器上的字节顺序?

    从字面上看 对 htonl 感到困惑 在很多链接中 我发现执行 htonl 的代码是 define HTONL n unsigned long n 0xFF lt lt 24 unsigned long n 0xFF00 lt lt 8 u
  • 在 MySQL 中插入十六进制值

    我使用 Java 创建了一个 SQL 数据库 我创建了一个表 其中有两列 第一列是一个递增的大整数 第二列我尝试将其定义为 char varchar 和二进制 但我仍然没有获得所需的功能 假设我尝试存储一个十六进制数字0a进入 char 列
  • 我如何判断我是否正在转发到复制构造函数?

    如果我正在编写一个将参数转发给构造函数的通用函数 有没有办法判断它是否是复制构造函数 本质上我想做的是 template
  • PyPdf不逐行读取pdf文本

    我正在使用 PyPdf 从 pdf 文件中读取文本 然而 pyPDF 不会逐行读取 pdf 中的文本 它以某种随意的方式读取 当 pdf 中不存在新行时 将新行放在某处 import PyPDF2 pdf path r C Users PD
  • 如何在.NET MAUI VISUAL STUDIOS 2022中使状态栏完全透明

    所以我发现你可以使用已弃用的代码来使 Android 上的状态栏完全透明 var s SystemUiFlags LayoutFullscreen SystemUiFlags LayoutStable FindViewById Androi
  • 在用户表单中选择图表

    我正在寻找编写一个宏 它从一个图表复制格式并将其应用到多个其他图表 我正在努力做的是确定一种方法来允许用户设置模板图表 然后选择多个其他图表 如果用户知道图表名称 则可以使用组合框来完成此操作 但我尝试在用户不知道图表名称的情况下执行此操作
  • 使用 Jest 测试承诺链

    我正在尝试用 Jest 测试承诺链序列 someChainPromisesMethod function async then async1 then async2 then result catch error 虽然测试单一承诺有很好的记
  • MongoDB Compass 与 WSL2 的问题

    我在 WSL2 内的容器内运行了一个 MongoDB 实例 当我尝试在浏览器中执行请求时localhost 27017即使它显示错误 它仍然可以工作 因为我尝试使用 HTTP 协议访问数据库 但是当我尝试使用主机名 localhost 和端
  • Monostate 是邪恶的 Singleton 的好表弟吗?

    Singleton 绝对是最被误用和滥用的模式之一 我们中的许多人都曾经感染过单侧炎 奇怪的是 它的近亲单态 https segueuserfiles middlebury edu xp SingletonAndMonostate pdf知
  • 序列化/反序列化 Boost.Geometry rtree

    简短版本 是否有任何稳定 可靠的方法来序列化 反序列化 Boost Geometry rtree 较长版本 Boost Geometry 中的 rtree 实现对序列化 反序列化提供了实验性支持 但支持不稳定 在反序列化过程中有时会抛出异常
  • django webapi:将 django 模型转储为 JSON

    我正在尝试将 django 模型转储为 JSON 格式 我尝试这样做 import json from api models import User from django http import HttpResponse def user
  • Android 房间分页不起作用

    我正在尝试使用 android Room API 从页面中的 sqlite 加载记录 问题是分页库正在将整个数据库加载到模型类中并将其与适配器绑定 这使得 UI 线程跳帧 它假设加载 20 条记录 然后在需要时继续添加更多记录 这是我的视图
  • 使用 MVC 的多步骤向导表单

    我计划使用 asp net mvc 2 构建一个多步骤表单 因此 我的 Web 应用程序将有 5 个页面对应 5 个步骤 每个步骤都有两个提交按钮 上一个和下一个 每个步骤的输入数据将被存储以供以后查看 例如 我们已经输入了步骤 1 2 3
  • 铁路路线限制未按预期发挥作用

    I asked this https stackoverflow com questions 31408608 rails make all routes default to format json今天早些时候关于将所有路由包装为默认 j
  • 从 ProceedingJoinPoint 获取 java.lang.reflect.Method?

    问题很简短 有没有办法从aspectj ProceedingJoinPoint 获取Method 对象 目前我正在做 Class parameterTypes new Class joinPoint getArgs length Objec
  • ARM GDB只能在Linux上无法访问内存

    尝试将开发切换到 Linux 但遇到了一个 可能是简单的新手 问题 在我的 Mac 上 我可以使用 ARM GDB arm eabi none gdb从 GNU ARM 嵌入式工具链 加载我的elf到我的STM32L432 然后在我的断点处