我试图在我的程序中找到一个不总是发生的分段错误。我试图在gdb中循环运行我的程序,直到分段错误发生为止。
我的问题是,gdb在接收到seg错误后继续进行while循环,并且没有提示我使用gdb。
在运行我的gdb时,我使用:
set $i=0
while($i<100)
set $i = $i+1
r
end
有人知道如何让gdb在一开始就停止分段故障而不运行100次吗??
谢谢!
我有一系列指向指针的指针:
void ** buckets.
每个指针指向某个内存块,其中包含指向另一个内存块的指针。
我试图得到其中一个指针,它指向这样的内存块:
void *cell = cm->buckets[0] // for the first blob it is pointing to.
但是,它给了我一个分段错误,gdb不是很有用。为何会发生这种情况,以及如何处理这宗个案?
我使用eclipse和ndk-gdb来调试我的AndroidNDK程序,但是我发现了一个问题,ndk-gdb工具似乎没有在程序崩溃时“保存堆栈”的功能,我无法从ndk-gdb中找到详细的信息,它没有指出哪个函数,哪个类和哪一行,只是给出这样的信息:*程序从D:/android/ndk/samples/mango_d/obj/local/armeabi/libc.so*收到信号SIGSEGV,分段错误。0xafd0cda4 in memcpy ()
所以,我想知道当程序崩溃时,有没有办法看到更多的信息(程序调用的最后一句话或其他句子),谢谢。
当我运行我的对象测试文件时,我得到了分段错误,所以我使用gdb来查找哪里有bug。但是,当我执行gdb (我的目标文件)时,我使用next遍历了该文件,但其中没有任何错误。我有点困惑,有没有好的方法来找出分段错误发生的地方?提前谢谢你。 这是我在gdb中所做的: (gdb) n
44 if (argc > 1) {
(gdb) n
45 tctest_testname_to_execute = argv[1];
(gdb) n
48 TEST(testGetWidth);
(gdb) n
49 TEST(testGetHeig
这个问题已经有了一些解决办法。
但这个完全不同!如果我注释掉std::flush行,则会发生分段错误,但是如果添加这一行,则不会发生分段错误!
int Stm32Serial::writeToSerial()
{
/// TODO Write handle for writing if necessary
/// int serial_write_ret;
if ( USE_USB )
{
usb_port.writeBytes ( stm_buf_t, stm_buf_t[LENGTH_INDEX] );
return SE
我在运行Linux应用程序时遇到了一个分段错误,我正在进行调试。
有一些限制,因为我对gdb并不熟悉,也不熟悉sementation调试。
我能得到的唯一信息是下面的日志。
GNU gdb (GDB) 8.2
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribut
在执行完我所有的C代码后,我得到了分段错误。它会生成所需的输出,而不会发生零字节内存泄漏。之后,它显示“分段故障”.Following是gdb的输出。
Program received signal SIGSEGV, Segmentation fault.
0x08060f90 in _GLOBAL_OFFSET_TABLE_ ()
(gdb) bt
#0 0x08060f90 in _GLOBAL_OFFSET_TABLE_ ()
#1 0xffbecd18 in ?? ()
#2 0x15048815 in ?? ()
#3 0xcd0fbecd in ?? ()
#4