加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读