gdb - 如何使用 gdb 检查 RTEMS 应用程序的堆和堆栈?

标签 gdb heap-memory stack-memory rtems

有没有办法使用 gdb 准确地知道 RTEMS 应用程序上堆和堆栈的地址范围?我知道 Linux 上有 info proc 映射,但我不认为 RTEMS 有/proc。使用 x 来检查内存会很棒,但我需要知道两者的地址范围。

我知道http://www.rtems.org/wiki/index.php/Debugging中有一些提示,但他们自己也承认这些确实是粗略的估计。

最佳答案

对于堆,您可以研究 Heap_Control 结构(在 cpukit/score/include/rtems/score/heap.h 中定义)和两个变量 RTEMS_Malloc_Heap_Workspace_Area。您似乎对 Heap_Control.area_beginHeap_Control.area_end 字段特别感兴趣。 _Workspace_Area 可以是堆的一部分或单独的内存区域,它保存内核数据结构。 RTEMS_Malloc_Heap 指向描述传统 C 程序堆的 Heap_Control。

对于堆栈,您可以查看关联的Thread_Control中包含的Thread_Start_information结构(在cpukit/score/include/rtems/score/thread.h中定义)与您要检查其堆栈的线程。您可以使用_Thread_Executing宏获取指向执行线程的指针。

关于gdb - 如何使用 gdb 检查 RTEMS 应用程序的堆和堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23976961/

相关文章:

reactjs - 打包时如何减少 React 应用程序构建时间和理解 webpack 的行为

c - 如何使用gdb调试越界?

cocoa - "EXC_BREAKPOINT (SIGTRAP)"异常是否是调试断点导致的?

c++ - 为什么 GDB 不能从带有信息符号的地址中找到符号?

visual-studio - 无法开始调试 : The value of miDebuggerPath is invalid

android - 为什么我的 Android 应用程序会在我的手机上持续崩溃,但不会在我的模拟器上崩溃的原因

android - Android 中使用的确切内存模型是什么?

c++ - 分配的内存在栈或堆中

c++ - C++ 中的 RAM、硬盘、堆栈和堆是什么?

c# - 从属性返回值类型