系统
新安装的代码块12.11 +明包。
win7 64
gcc 4.7.1
gdb 7.5
示例代码
使用-g编译,没有优化。
#include <stdio.h>
void foo(int a, int b);
int main() {
foo(400, 42);
return 0;
}
void foo(int a, int b) {
a = a - 10;
b = a + 1;
printf("y2 %d\n", b);
}
问题
我在"void ( int,int)“上放置
我之前安装了GDB来调试eclipse中的C,它工作得很好。我现在也想用我的cortex m-3做同样的事情,但是我不能用GDB创建一个二进制对象,因为它给了我一个错误。我想用下面的方法生成一个二进制文件:
as -mcpu=cortex-m3 -mthumb example1.s -o example1.o
它不能识别我的皮质-m3,它给了我以下错误:
as: unrecognized option `-mcpu=cortex-m3'
当使用我的GDB进行版本检查时,它显示以下内容:
This GDB was configured as "x86_64-w64-
我想使用GDB在NASM汇编代码中中断一个本地标签。
发出以下命令会产生以下输出:
(gdb) break *start.label1 + 217
Attempt to extract a component of a value that is not a structure.
下面是我的代码:
global _start
_start:
...
.label1:
...
如何在本地.label1中断
我目前正在做一个学校项目,我迷失了使用gdb在ubuntu上寻找缓冲区溢出漏洞。
我以前从未使用过gdb,但在互联网上做了一些研究,当我使用"disas main“命令时,我对我正在看的内容感到不知所措。
我想知道是否有人能帮助我了解如何调试这个程序或任何其他程序,并告诉我返回地址是如何找到的。
我这里有个密码:
/* This program has a buffer overflow vulnerability. */
/* Our task is to exploit this vulnerability */
#include <stdlib.h>
#include
我们在windows上的汇编程序和一些英特尔电脑上运行学生。在使用布局时,gdb在msys2下失败。我能够让它在CMD窗口上工作,但如果:
gdb myexe
layout src
b main
r
程序崩溃。有时窗户是锁着的
如果我们第一次在命令行模式下运行,它就能工作:
gdb myexe
b main
r
然后
layout src
或
layout asm
layout reg
这既令人不安又可怕。我们不能重新运行任何东西,总是必须终止调试器并重新开始。
在MacOSX蒙特雷12.0.1 (英特尔MacBook Pro 2019),我们也有类似的问题。我们安装了gdb 12.1
gdb
核心文件是由剥离了符号的代码发布版本(g++)生成的。
以相同(SVN)版本的代码为例,我修改了构建选项以包含符号。
我应该能够使用我构建的包含符号的可执行文件来调试该核心文件吗?看起来我做不到,但我只是想确保这不是我做错了什么。
bash-3.2$ gdb ./MyTest.53519 -c ~/public_html/core.20375.MyTest
GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-42.el5)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+
我正在尝试编写一个gdb函数,该函数会循环执行,直到传递的参数等于程序计数器。
我使用的是原始CPU,68332。无硬件断点。没有支持GDB软件断点的操作系统,只有一个指令步骤。GDB提供了'nexti count‘的’软件‘模拟。JTAG提供了一个run to address。
然而,由于某些原因,JTAG在用于运行到地址时会使CPU不堪重负,并且我得到了总线错误。我似乎只能可靠地使用'step‘单指令。
如果我使用GDB‘单步’到地址,我不会得到总线错误。
下面是我对这样一个GDB函数的尝试。
define mtia
if $argc == 1 then
s