linux中的gdb C代码 – 地址超出范围
发布时间:2020-12-14 00:05:47 所属栏目:Linux 来源:网络整理
导读:我有以下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 =
我有以下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 != ' '){ *pB++ = *pA++; } *pB = ' '; 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
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |