gpt4 book ai didi

c - 在 GCC 中以编程方式调用调试器

转载 作者:太空宇宙 更新时间:2023-11-04 06:05:04 25 4
gpt4 key购买 nike

是否可以通过编程方式从 GCC 进入调试器?

例如我想要这样的东西:#define STOP_EXECUTION_HERE ???当放在某些代码行上时,它将强制调试器停在那里。有可能吗?我找到了 some solution , 但我不能使用它,因为在我的嵌入式 ARM 系统上我没有 signal.h

(不过我可以使用内联汇编)。

最佳答案

你正在尝试做的是 software breakpoint

如果不知道您实际如何调试,很难准确地说出。我假设您的嵌入式系统运行 gdbstub。如何支持这一点有多种可能性:

使用专用 BKPT说明

这可能是您的系统和调试器支持软件断点的标准方式

向 CPU 提供无效指令

gdbstub 可以放置自己的 UNDEF ARM 模式处理程序。如果你走这条路,你必须知道当前的 CPU 模式(ARM 或 THUMB),因为指令大小会不同。未定义指令的示例:

ARM: 0xE7F123F4
THUMB: 0xDE56

在运行时 CPU 模式下,可以从 PC 寄存器的最低位找到。但更简单的方法是知道你如何编译目标文件,在哪里放置软件断点

使用SWI指令

我们在使用 RealView ICE 时这样做了。如果您在嵌入式系统上运行某些操作系统,这很可能不适用于您。 SWI通常被OS用来实现系统调用

关于c - 在 GCC 中以编程方式调用调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11842409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com