崩溃文件生成及调试

linux & mac

  1. 产生core文件方法
  • 在当前环境下生成coredump文件,运行 ulimit -c unlimited
  • 永久生成coredump文件,在 /etc/profile 文件中追加一行 ulimit-c unlimited
  1. 默认coredump文件生成在当前工作目录,修改文件 /proc/sys/kernel/core_pattern/data/coredump/core.%e.%p
    其中%e表示程序名,%p表示进程id,路径为/data/coredump目录
  2. 编译时要加上-g选项,这个才能用gdb调试的coredump
  3. linux使用加载gdb加载coredump文件进行调试
    1
    2
    3
    4
    5
    gdb coredumpfile
    #或者
    gdb execfile
    #加载完成后再输入
    core-file coredumpfile
  4. mac使用lldb加载coredump文件进行调试
    1
    2
    cd /cores
    lldb -c coredumpfile
  • ulimit -c 显示核心转储文件大小的最大值,如果这里是零:禁止核心转储(对于本进程和它的子进程)。
  • 默认情况下,mac core文件均存在/cores目录下,linux core文件存在当前工作目录。
    • 可以通过ulimit -c unlimited来设置core文件生成路径。
    • 可以通过ulimit -c size来设置core文件大小。
    • 可以通过ulimit -c 0来禁止生成core文件。

windows

windows 请查看这篇文章Windows C++ 程序崩溃收集工具