小编Red*_*and的帖子

-0x4(%rbp) 在 gdb 反汇编中意味着什么?

我目前正在研究 gdb 反汇编,以帮助我了解有关 c 程序的更多细节,因此我编写了 ac 程序:

#include <stdio.h>

void swap(int a, int b){
        int temp = a;
        a = b;
        b = temp;
}
void main(){
        int a = 1,b = 2;
        swap(a, b);
}
Run Code Online (Sandbox Code Playgroud)

我使用 gdb 并运行disass /m main来获取这些:

(gdb) disass /m main
Dump of assembler code for function main:
8   void main(){
   0x0000000000400492 <+0>: push   %rbp
   0x0000000000400493 <+1>: mov    %rsp,%rbp
   0x0000000000400496 <+4>: sub    $0x10,%rsp

9       int a = 1,b = 2;
   0x000000000040049a <+8>: movl   $0x1,-0x8(%rbp) …
Run Code Online (Sandbox Code Playgroud)

c gcc gdb disassembly

6
推荐指数
1
解决办法
1万
查看次数

Linux c程序中函数strcpy的奇怪分段错误

这是我的源代码:

char *
cpy_strcpy (dest, src)
     char *dest;
     const char *src;
{
  char c;
  char *s = (char *) src;
  const ptrdiff_t off = dest - s - 1;

  do
    {
       //c = *s++
       //s[off] = c;
       s[off] = *s;
    }
  while (*s++ != '\0');
  //while( c != '\0' );
  return dest;
}
Run Code Online (Sandbox Code Playgroud)

当我使用gdb调试它时,我得到了这个:

(gdb) s
26    while (*s++ != '\0');
(gdb) 
27    return dest;
(gdb) 
28  }
(gdb) 

Program received signal SIGSEGV, Segmentation fault.
0x000000000040050a in cpy_strcpy (dest=can't compute …
Run Code Online (Sandbox Code Playgroud)

c linux gdb

0
推荐指数
1
解决办法
1418
查看次数

标签 统计

c ×2

gdb ×2

disassembly ×1

gcc ×1

linux ×1