debugging - 了解电围栏和gdb的输出

标签 debugging segmentation-fault gdb electric-fence

调试以segfault终止的程序时,电子围栏与gdb一起返回以下内容:
"ElectricFence Exiting: mprotect() failed: Cannot allocate memory [Thread 0xb0bd4b70 (LWP 5363) exited] Program exited with code 0377.
我实际上认为电围栏会更有帮助。这是什么意思?我该如何解释这些信息?我似乎没有剩下的任何堆栈,或者至少bt将不会返回任何内容。

任何建议将不胜感激。

谢谢!

最佳答案

您可能已用完内存映射区域。使用调试分配器时,默认值较低。可以在运行时通过以下方式进行调整

echo 128000 > /proc/sys/vm/max_map_count

或通过将以下行添加到/etc/sysctl.conf并重新启动:
vm.max_map_count = 128000

max_map_count编号默认为65530,如有必要,可以增加到MAX_INT。

有关更多信息,请参见:
  • max_map_count
  • Side effects when increasing vm.max_map_count
  • 关于debugging - 了解电围栏和gdb的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4189190/

    相关文章:

    c# - 在本地计算机上调试 Windows 应用商店应用程序

    c - fscanf 返回段错误,而我的文件指针不为空

    c - 使用 GDB 断点

    条件评估为真,而调试器说它应该为假

    jquery文档就绪问题

    .net - Visual Studio 2010断点未加载任何符号

    debugging - Visual Studio 2017 中的调试会拒绝访问

    c - 打开 MPI Waitall() 段错误

    c - 处理导致段错误的空字符串输入

    c - 如何通过查看可执行警告消息找到源函数调用?