如何在Arduino中转储堆栈
How do I dump my stack in Arduino?
我正在寻找一种方法来转储我的arduino堆栈。我知道有一个堆栈指针(SP)可用,我现在尝试的是:
char* stack = (char*)SP;
int counter = 0;
strncpy(c, &stack[counter], 1);
while(counter < 200)
{
counter++;
strncat(c, &stack[counter], 1);
}
Serial.print(c);
我没有得到任何像堆栈一样的东西,所以我不知道我做得是否正确。请帮忙!
uint8_t stackArray[30];
void createStackDump()
{
volatile uint8_t* mSP = (uint8_t*)SP;
for (int i = 0; i < 30; i++)
{
stackArray[i] = *mSP;
mSP++;
}
}
堆栈上的调用地址首先是LSB,因此LSB具有更高的堆栈地址。它们被向右移动1位。
uint8_t * tStackPtr = (uint8_t *) SP;
// We have 19 pushs and pops for this function so add 19+1
uint16_t tPC = *(tStackPtr + 20);
tPC <<= 8;
tPC |= *(tStackPtr + 21);
tPC <<= 1;
Serial.print(F("PC=0x"));
Serial.println(tPC, HEX);
相关文章:
- 检测到堆栈粉碎:已终止 中止(核心已转储)
- C++运行时错误与快速排序算法抛出堆栈转储错误
- cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到 class4.exe.sta
- WinDbg 不显示某些小型转储文件的完整堆栈跟踪
- 打开C++故障转储不会在调用堆栈中显示正确的行
- 当外部源代码中发生异常时,无法正确使用自创建的小型转储文件的堆栈跟踪
- 堆栈粉碎中止<unknown>(核心转储)错误
- GDB正在调试一个缺少特定调用堆栈的符号表的核心转储
- QT应用程序崩溃但不容易复制,我捕获了转储堆栈以及如何通过堆栈找到源代码
- 由procexp(MS process explorer)创建的VC10调试转储文件-只有堆栈信息,没有变量值
- C++/g++cygwin_exception::open_stackdumpfile:将堆栈跟踪转储到*.exe.st
- 堆芯转储的原因是什么?来自oraclelib的堆栈显示
- 分段错误(核心转储) 覆盖运算符时<<堆栈
- 从转储中获取调用堆栈的几乎所有帧中的此指针 NULL 表明什么
- 使用 3 个堆栈实现排序.(分段错误 - 核心转储)
- 在Windows上使用gcc崩溃后转储堆栈
- While循环导致堆栈转储,程序在C++中崩溃
- 用于从堆栈转储和.elf文件中提取FreeRTOS/ARM/ c++堆栈跟踪的工具
- 调试转储文件调用堆栈没有太多信息
- 分析核心转储与堆栈损坏