我有以下 C 代码:
#include <stdio.h>
char strA[80] = {"string to be used for demonstration purposes."};
char strB[80];
int main(void){
char *pA; //A pointer to type char
char *pB; //Another pointer to type char
puts(strA); //Show string A
pA = strA; //Point pA to string A
puts(pA); //Show what pA is pointing to
//printf("pA = %s", pA);
pB = strB; //Point pB to string B
putchar('\n'); //Move down one line on the screen
while(*pA != '\0'){
*pB++ = *pA++;
}
*pB = '\0';
puts(strB); //Show string B on the screen
return 0;
}
现在我使用 gdb 进行调试,并执行以下步骤:
gdb str
break main
run
x/s $esp
但在这里我得到“如果有界则地址”错误......
任何人都可以告诉我如何解决它?
谢谢你
最佳答案
那是因为您在 64 位机器上, $esp 是一个 32 位寄存器。你会想要做 x/s
$rsp
关于c - linux中的gdb C代码-地址越界,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20891195/