gdb相关内容

如何让 ndk-gdb 在 Android 上运行?

我正在尝试让 NDK 调试器正常工作,但目前没有成功. 为了确保我的调试符号存在且有效,我使用了编译器选项 -O0 和 -g,以及 ndk-build 参数 NDK_DEBUG=1. ndk-gdb 脚本运行没有问题并启动 GDB.当执行“sharedlibrary"命令时,我得到这个: 符号已经为/bla/bla/libMySharedLib.so 加载 但是,当我尝试中断执行或 ..
发布时间:2021-11-27 20:04:48 移动开发

GDB 无法加载 so 文件和错误 没有此类文件或目录

我正在使用 alpine linux 将核心文件加载到 docker 容器内的 GDB 中.最初我的 gdb 抱怨找不到二进制文件,然后我跟着这个讨论 gdb 在启动程序以代码 127 退出并安装了 libc6-compat,即使我有 64 位 linux 并且我的二进制解释器是 64 位 [请求程序解释器:/lib64/ld-linux-x86-64.so.2] 这确实有效,但现在我遇到了 ..
发布时间:2021-11-27 08:28:16 服务器开发

gdb - nop 有额外数据,为什么?

我目前正在编写简单的测试以了解 gdb 如何使用 extern "C" 和选项 -O0 从 C++ 编译为 asm,并且我的 asm 对象是用 nasm -g -f elf64 这是我分解的相关堆栈帧: 0x0000000000400570 : 推送 rbp0x0000000000400571 : mov rbp,rsp0x0000000000400574 :按 r10= ..
发布时间:2021-11-25 07:08:00 C#

64 位缓冲区溢出

为了好玩,我正在尝试做一些缓冲区溢出的实验.我正在这个论坛上阅读有关该主题的内容,并尝试编写自己的小代码. 所以我做的是一个小的“C"程序,它接受字符参数并运行直到分段错误. 所以我提供参数,直到我收到一条消息,我用“A"覆盖了返回地址,即 41.我的缓冲区字符长度,在其中复制我的输入字符串是 [5]. 这是我在 gdb 中所做的. run $(perl -e 'print " ..
发布时间:2021-11-25 06:26:57 C#

如何让 GDB 打印 64 位变量?

我正在使用 GDB 调试用 组装的代码 nasm -felf64 -Fdwarf 当我想检查标签符号处的值时,说 var_h: dq -1 使用 打印 var_h GDB 假定该值是 32 位并且只给我最低的 4 个字节 x \1gx $var_h 给出类似“无法将值转换为整数"的错误 非常感谢您的任何想法! 解决方案 这应该有效: ( ..
发布时间:2021-11-25 06:14:30 C#

64 位上的堆栈常驻缓冲区溢出?

我正在研究一些与安全相关的东西,现在我正在玩我自己的堆栈.我所做的应该非常简单,我什至没有尝试执行堆栈,只是为了表明我可以控制 64 位系统上的指令指针.我已经关闭了我所知道的所有保护机制,只是为了能够使用它(NX 位、ASLR,还使用 ​​-fno-stack-protector -z execstack 进行编译).我在 64 位汇编方面没有太多经验,在自己花了一些时间进行搜索和试验之后,我想 ..
发布时间:2021-11-25 05:51:39 C#

在带有 Centos 5 的 64 位机器上使用带有 32 位二进制文​​件的 gdb 和 gdbserver 会抱怨内存访问或格式错误的数据

我有两台相同的 64 位 Centos 5 机器,它们联网并共享它们的/home 安装.我在一台机器上编译了一个简单的 Hello World 程序,然后我想出了如何在一台机器上使用 gdb 远程调试在另一台机器上运行的它.当每个人都默认为 64 位时,这似乎工作正常. 但是,如果我使用 -m32 编译我的 Hello World 以生成 32 位二进制文​​件,即我们完整系统的编译方式,那 ..
发布时间:2021-11-24 23:45:13 C#

在 64 位环境中使用 gdb 调试 32 位应用程序

在 64 位操作系统下使用 64 位 gdb 调试 32 位应用程序是否需要任何特定步骤 通常我对 gcc 使用 -m32 开关,是否有类似 gdb 的开关? 解决方案 否:64 位 GDB 可以调试 32 位或 64 位进程. 此消息 warning: the debug information found in "/lib/ld-2.11.1.so" does not ma ..
发布时间:2021-11-24 23:41:27 C#

如何在没有 jtag、断点、模拟器、模拟器的情况下单步执行目标代码

假设您有一个指向函数的指针,该函数的来源您没有并且“不受信任",因为它可能读/写到不允许的内存区域. 在执行每条汇编指令之前,您需要验证它没有访问不允许的内存区域. 操作系统(几乎)是裸机,即自定义 RTOS(因此没有 Linux 或 QNX). 这适用于不仅在开发期间而且在正常运行时都需要启用的功能. 理想情况下,它会运行如下: void (*fptr)(int);fp ..
发布时间:2021-11-17 22:39:42 其他开发

Linux 内核模块作弊 - Qemu Baremetal Xilinx Zynq A9

我的目标是模拟 Zynq-7000 上的 ARM A9 处理器,运行裸机软件.我为此尝试了 2 种不同的方法,但都遇到了障碍.任何有关如何进行的建议将不胜感激. StackOverflow 上的当前答案: 如何制作裸机 ARM 程序并在 QEMU 上运行它们? 链接到 Linux 内核模块作弊 (LKMC, 使用 v3.0) 使用 ./build --arch arm qem ..
发布时间:2021-11-17 22:39:15 其他开发

GDB 硬件断点不适用于远程调试

我使用 GDBServer 对 ARM11 CPU 进行远程调试.软件断点运行良好,但我使用“hbreak test.c:5"设置硬件断点,CPU永不停止. GDB 版本:7.3.1 目标处理器:ARM11 操作: arm-linux-gdb ./main(gdb) 目标远程 192.168.0.1:2345(gdb) hbreak test.c:5 =>硬件断点,不行.但如果 ..
发布时间:2021-11-17 22:36:46 其他开发

gdb vs. objdump arm 反汇编函数分支名称解析

我有一个奇怪的问题.如果我使用 objdump -d 来反汇编 ARM 二进制文件,它可以解析分支指令的函数(系统库)名称,例如: 8404: e581e000 str lr, [r1]8408: e59f0028 ldr r0, [pc, #40] ;第8438章840c:ebffffc1 bl 8318 8410: e59f0028 ldr r0, [pc, #40] ..
发布时间:2021-11-17 22:36:21 其他开发

警告:可加载部分“my_section"在 ELF 段之外

我使用 Arm Compiler v6.9 for Cortex-R4 构建了一个 axf(elf)文件.但是,当我使用 Arm MCU Eclipse J-link GDB 插件将它加载到目标时,它无法加载我的段的初始化数据.如果我使用 Segger Ozone 和 J-Link 加载 axf,它会正确加载初始化数据. 如果我在 axf 文件上运行 arm-none-eabi-gdb.ex ..
发布时间:2021-11-17 22:30:55 其他开发

调试器外编程OK,步进时调试器下SIGILL?

我正在尝试在 BeagleBone Black 上调试程序.在调试器之外,它会产生不正确的结果,但不会产生 SIGILL.它也可以在没有断点的调试器下正常运行.但是,它会在单步执行时生成带有断点设置的 SIGILL.该程序和库不使用基于 SIGILL 的 cpu 功能探测器.但是,我不知道 GDB 在做什么. 在我看到的调试器下: (gdb) b main0x26f20 处的断点 1:文件 ..
发布时间:2021-11-17 22:30:28 其他开发

RHEL 的 gdb-multiarch

我正在尝试在 RHEL 中运行 gdb-multiarch 命令.我已经安装了用于 ARM 处理的 QEMU 模拟器.我想安装 GDB 进行调试.我可以通过运行命令 在 Ubuntu 中成功安装 GDB-multiarch sudo apt-get GDB-multiarch 但是,我没有找到yum install GDB-multiarch.如果我在 RHEL 中运行命令 GDB,我会得到 ..
发布时间:2021-11-17 22:30:05 其他开发

暂停调试器时 STM32 冻结外围设备

调试器可以在到达断点或用户暂停代码执行时停止执行 Cortex 中的代码.但是,当 cortex 在暂停状态下停止执行代码时,调试器是否会冻结其他外围设备,例如 DMA、UART 和 TIMERS? 解决方案 你只能持有 time/r 依赖外设. 我在进入主函数时调用以下代码: DBGMCU->APB1FZ |= DBGMCU_APB1_FZ_DBG_TIM2_STOP |DBG ..
发布时间:2021-11-17 22:26:51 其他开发

gdb 不会从外国架构中读取核心文件

我试图在我的 Linux 桌面上读取 ARM 核心文件,但似乎无法找出我的核心文件.有什么方法可以指示 gdb 我的核心文件是什么类型的? $ 文件 ~/daemon./daemon:ELF 32 位 LSB 可执行文件,ARM,版本 1,动态链接(使用共享库),用于 GNU/Linux 2.0.0,未剥离$ 文件 ~/核心./core:ELF 32 位 LSB 核心文件 ARM,版本 1 (S ..
发布时间:2021-11-17 22:25:52 其他开发

GDB如何确定ARM架构

我将 gdb (arm-none-eabi) 与 Texas Instruments Hercules (Cortex-R4F) 处理器一起使用.我使用 Texas Instrument 的 XDS 代理作为远程 GDB 服务器 运行后 目标远程ip:port 在 GDB 中,GDB 将与 XDS GDBserver 连接.然后我可以打印寄存器 info 所有寄存器 它向我展示了 C ..
发布时间:2021-11-17 22:24:50 其他开发

尝试为 ARM 构建 GDB 时出错

我正在尝试为我的 Ubuntu 16.04 机器上的手臂构建 GDB(8.0 版).打算直接在arm机上调试(目前没有服务器). 我已执行这些说明(正如在此处所解释的那样) ./configure --target=arm-linux-gnueabi --host=arm-linux-gnueabi --build=x86_64_unknown-linux-gnu制作 在链接过程中,系统 ..
发布时间:2021-11-17 22:20:57 其他开发

gdb:找不到新线程:系统更新后出现一般错误

我在运行我的应用程序的 ARM 板上运行基于 OpenEmbedded 的 Linux.我曾经运行过内核 2.6.35、gdb 6.8 和 gcc 4.3.最近我将系统更新到内核 2.6.37、gdb 7.4(也尝试了 7.3)和 gcc 4.6. 现在,我的应用程序无法再调试(在 ARM 板上),每次我尝试在 gdb 中运行它时,我都会收到错误“gdb:找不到新线程:通用错误".该应用程序 ..
发布时间:2021-11-17 22:17:58 其他开发