如何在Arduino中转储堆栈?

时间:2014-11-01 18:49:09

标签: c++ printing arduino stack dump

我正在寻找一种方法来转储我的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);   

我没有像堆栈那样得到任何东西,所以我不知道我是否正确行事。 请帮忙!

2 个答案:

答案 0 :(得分:1)

uint8_t stackArray[30];
void createStackDump() 
{
  volatile uint8_t* mSP = (uint8_t*)SP;

  for (int i = 0; i < 30; i++) 
  {
    stackArray[i] = *mSP;
    mSP++;
  }
}

答案 1 :(得分:0)

堆栈上的调用地址是LSB在前,因此LSB具有较高的堆栈地址。 然后将它们右移1位。

this.filePathAndName = "assets/example.pdf";

<ngx-extended-pdf-viewer *ngIf="filePathAndName" [src]="filePathAndName"