草庐IT

MinGW-gdb

全部标签

linux - 有谁知道是否有人集成了 libsegfault.so 和 gdbserver 以便将 gdb 即时附加到崩溃的程序?

它在http://sourceware.org/ml/gdb/2007-06/msg00360.html中提到之前。但似乎没有人真正实现过这种想法。实现这一点有什么障碍吗?我的要求如下:能够插入任何elf二进制可执行文件(例如使用LD_PRELOAD)二进制文件可以是多线程可执行文件二进制文件可能链接到包含主要功能的库这应该适用于x86以外的各种cpu架构(至少是MIPS、ARM、PPC)因此,如果已经有这样的解决方案,我想要一个链接,但如果还没有,我想知道为什么它还没有作为轮子实现。可能只是没有人不需要它...但我认为这对于作为标准准备非常有用。除了将代码放在一起之外,任何技术或政治

linux - 结构变量上的 gdb 观察点

我有这样的结构:structA{inta;charb;};此结构在大型代码的不同地方被引用。指向这个结构的指针被传递给不同的函数,相应地更新了这个结构中的变量。我想在此结构中的变量a上设置一个观察点,因为它遍历许多函数。看看a是如何变化的。如何设置这个观察点? 最佳答案 首先设置一个断点,您可以在其中使用break创建结构的实例,例如breakmyfile.c:9然后只需使用watch设置一个观察点,比如watchmyStructInstance.a对于变量a或watch*0x7ffff75177f0用于内存地址。可以使用print

linux - 结构变量上的 gdb 观察点

我有这样的结构:structA{inta;charb;};此结构在大型代码的不同地方被引用。指向这个结构的指针被传递给不同的函数,相应地更新了这个结构中的变量。我想在此结构中的变量a上设置一个观察点,因为它遍历许多函数。看看a是如何变化的。如何设置这个观察点? 最佳答案 首先设置一个断点,您可以在其中使用break创建结构的实例,例如breakmyfile.c:9然后只需使用watch设置一个观察点,比如watchmyStructInstance.a对于变量a或watch*0x7ffff75177f0用于内存地址。可以使用print

c - GDB SIGALRM,闹钟终止

我遇到了一个以前没见过的小问题。我正在尝试调试一个软件包并通过GDB运行(在UbuntuLinux上)。几秒/分钟后,我收到此消息:ProgramterminatedwithsignalSIGALRM,Alarmclock.Theprogramnolongerexists然后,我退出GDB,重新启动并继续调试...这真的很烦人,因为我不得不退出它1000次。我想知道以前是否有人遇到过这个问题?!我假设“SIGALRM”已在某处的源文件中编程,是否有一种方法可以运行GDB而不受上述影响?谢谢。 最佳答案 告诉gdbignore信号:(

c - GDB SIGALRM,闹钟终止

我遇到了一个以前没见过的小问题。我正在尝试调试一个软件包并通过GDB运行(在UbuntuLinux上)。几秒/分钟后,我收到此消息:ProgramterminatedwithsignalSIGALRM,Alarmclock.Theprogramnolongerexists然后,我退出GDB,重新启动并继续调试...这真的很烦人,因为我不得不退出它1000次。我想知道以前是否有人遇到过这个问题?!我假设“SIGALRM”已在某处的源文件中编程,是否有一种方法可以运行GDB而不受上述影响?谢谢。 最佳答案 告诉gdbignore信号:(

vscode c/c++ MinGW/MSYS2 配置 | 解决中文乱码/找不到dll问题(不设置环境变量)

vscodec/c++MinGW/MSYS2配置|解决中文乱码/找不到dll问题(不设置环境变量)本文主要是在不设置环境变量的情况下配置vscode并解决常见问题MinGW/MSYS2安装MSYS2是一个类似于Linux的shell环境,可以在Windows上使用pacman安装软件包。它包含了一个mingw-w64工具链,可以在Windows上编译出可执行文件。MinGW-w64-for32and64bitWindows选择MinGW-W64GCC-8.1.0或以上版本,x86_64-posix-seh[科普][FAQ]MinGWvsMinGW-W64及其它c/c++vscode环境搭建c/

c - 反调试 : gdb does not write 0xcc byte for breakpoints. 知道为什么吗?

我正在学习Linux上的一些反调试技术,发现了一段代码,用于检查内存中的0xcc字节以检测gdb中的断点。这是代码:if((*(volatileunsigned*)((unsigned)foo+3)&0xff)==0xcc){printf("BREAKPOINT\n");exit(1);}foo();但它不起作用。我什至尝试在foo()函数上设置断点并观察内存中的内容,但没有看到任何为断点写入的0xcc字节。这是我所做的:(gdb)bfooBreakpoint1at0x804846a:filep4.c,line8.(gdb)x/x0x804846a0x804846a:0xe02404c

c - 反调试 : gdb does not write 0xcc byte for breakpoints. 知道为什么吗?

我正在学习Linux上的一些反调试技术,发现了一段代码,用于检查内存中的0xcc字节以检测gdb中的断点。这是代码:if((*(volatileunsigned*)((unsigned)foo+3)&0xff)==0xcc){printf("BREAKPOINT\n");exit(1);}foo();但它不起作用。我什至尝试在foo()函数上设置断点并观察内存中的内容,但没有看到任何为断点写入的0xcc字节。这是我所做的:(gdb)bfooBreakpoint1at0x804846a:filep4.c,line8.(gdb)x/x0x804846a0x804846a:0xe02404c

c++ - gdb 说 "cannot open shared object file"

我有一个二进制文件和一个共享库。共享库编译为:all:g++-g-shared-fpic$(SOURCES)-olibmisc.so二进制文件编译为:LIBS=-L../../misc/srcLDFLAGS=-lmiscall:g++-g-omainx$(INCLUDE)$(SOURCE)$(LIBS)$(LDFLAGS)我设置在~/.bashrcexportLD_LIBRARY_PATH=/mnt/sda5/Programming/misc/src/到libmisc.so输出路径。从控制台调试工作正常:gdbmainx但是在Emacs22中,启动gdb失败并显示以下消息:Starti

c++ - gdb 说 "cannot open shared object file"

我有一个二进制文件和一个共享库。共享库编译为:all:g++-g-shared-fpic$(SOURCES)-olibmisc.so二进制文件编译为:LIBS=-L../../misc/srcLDFLAGS=-lmiscall:g++-g-omainx$(INCLUDE)$(SOURCE)$(LIBS)$(LDFLAGS)我设置在~/.bashrcexportLD_LIBRARY_PATH=/mnt/sda5/Programming/misc/src/到libmisc.so输出路径。从控制台调试工作正常:gdbmainx但是在Emacs22中,启动gdb失败并显示以下消息:Starti