gdb-gdp调试的时候查看寄存器信息提示 The program has no registers now.怎么解决?

问题描述

gdp调试的时候查看寄存器信息提示 The program has no registers now.怎么解决?
源代码是这样的
#include ""stdio.h""
#include ""string.h""

char code[]=
x41x41x41x41x41""
x41x41x41x41x41""
x41x41x41x41x41""
x41x41x41""
x41x41x41x41""
x82x84x04x08""
x00"";

void copy(const char *input)
{
char buf[10];
strcpy(buf input);
printf(""%s n"" buf);
}

void bug(void)
{
printf(""I shouldn't have appearedn"");
}

int main(int argc char *argv[])
{
copy(code);
return 0;
}
使用gdb调试进行溢出攻击的时候,
(gdb) disasse main
Dump of assembler code for function main:
0x0000000000400603 <+0>: push %rbp
0x0000000000400604 <+1>: mov %rsp%rbp
0x0000000000400607 <+4>: sub $0x10%rsp
0x000000000040060b <+8>: mov %edi-0x4(%rbp)
0x000000000040060e <+11>: mov %rsi-0x10(%rbp)
0x0000000000400612 <+15>: mov $0x601050%edi
0x0000000000400617 <+20>: callq 0x4005bc
0x000000000040061c <+25>: mov $0x0%eax
0x0000000000400621 <+30>: leaveq
0x0000000000400622 <+31>: retq

End of assembler dump.
(gdb) info all-registers
The program has no registers now.

求教~THX

解决方案

试试使用 r 命令后再使用 info all-registers

解决方案二:
应该是没有设置断点,break一下试试

时间: 2024-09-14 21:55:17

gdb-gdp调试的时候查看寄存器信息提示 The program has no registers now.怎么解决?的相关文章

ubuntu下用gdb调试汇编提示The program has no registers now

问题描述 ubuntu下用gdb调试汇编提示The program has no registers now 我已经运行了程序,它还是这么提示,请问这是为什么?求高人解答 解决方案 参考info registers command Common errors If you run the info registers command without starting your program, you will get the The program has no registers now m

GDB单步调试基础

最近全面换成 Linux 平台了,感觉如果不玩游戏 Linux 桌面基本可以替代 Windows 了,但是调试器这个还是问题,gdb可以解决这个问题. 一.GDB 概述 GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像 VC . BCB 等 IDE 的调试,但如果你是在 UNIX 平台下做软件,你会发现 GDB 这个调试工具有比 VC . BCB 的图形化调试器更强大的功能.所谓 " 寸有所长,尺有所短 " 就是这个道理

gdb常用调试命令以及多线程堆栈的查看

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.所谓"寸有所长,尺有所短"就是这个道理. 一般来说GDB主要调试的是C/C++的程序.要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中.使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点.如:       >

Android下音频的测试程序tinyalsa(录音,放音,查看声卡信息)

audio代码比较复杂,除了音频参数,我们平时客制化的地方不多.所以没有太深入了解. 建议先抽空看看如下代码: kernel, linux alsa 架构:kernel-3.10/sound/soc/mediatek/kernel-3.10/Documentation/sound/alsa/soc/ android 上层alsa接口external/tinyalsa/ hal:vendor/mediatek/proprietary/platform/common/hardware/audio/v

GDB秘技--调试时执行代码中的特定函数

        在使用GDB调试程序时,有时遇到看到数据不知所云,必须对照定义才能看懂, 有时还要做些运算才能看出来,这样效率显然不高. 如果需要查看一个变量类的当前值,简单的数据类型还好说,如果遇到一些枚举型的变量或特殊条件,想要看到清晰的数据输出,就会比较繁琐. 好在GDB提供了一个调试时执行某个函数的功能:call, 在需要时能帮你解决大问题.         举个简单的例子,如果有一个类定义了一个dump方法, 在调用时或者在类的内部,都可以在你想要看看数据时,使用call执行一下: a

gcc程序编译和gdb程序调试的基本选项

GCC程序编译 基本格式:gcc [options] [filename] -o 输出可执行文件,如果不给出这个选项,则默认输出a.out可执行文件:如:gcc hello.c -o hello -c 只编译,不连接为可执行文件,生成为以.o为后缀名的目标文件:如:gcc -c hello.c -S 只激活预处理和编译,就是指把文件编 译成为汇编代码.如:gcc -S hello.c    -O 优化编译.连接:-O2对-O再进行优化编译.连接:    -g 编译时,对函数库产生符号信息:(注:

ubuntu系统中查看硬件信息命令指南

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;    查看ubuntu硬件信息 1, 主板信息 .查看主板的序列号 -------------------------------------------------- #使用命令 dmidecode | grep -i 'serial number' #查看板卡信息 cat /proc/pci -----------------------------------

嵌入式arm linux环境中gdb+gdbserver调试

采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试.目标系统必须包括gdbserver程序,宿主机也必须安装gdb程序.在此我们还不能直接采用linux发行版自带的gdb,需要交叉编译gdb和gdbserver. 一.前言 嵌入式Linux系统中,应用开发过程中,很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序.采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gd

android真机调试时无法显示logcat信息的解决方法介绍

以下是对android真机调试时无法显示logcat信息的解决方法进行了详细的分析介绍,需要的朋友可以过来参考下   android真机调试时无法显示logcat信息的解决方法介绍: window-->show view-->android->devices, 打开devices,点击右边的截屏图片的按钮.等到出现截图的时候,logcat就出来信息了!