如何获取详细的 valgrind 核心或使用 gdb 将调试附加到核心在启动时转储的进程?
Posted
技术标签:
【中文标题】如何获取详细的 valgrind 核心或使用 gdb 将调试附加到核心在启动时转储的进程?【英文标题】:How to get detailed valgrind core or attach for debug with gdb to the process which cores dump at start? 【发布时间】:2019-11-18 14:06:53 【问题描述】:我有一个进程在开始时核心转储,我想知道原因。
我能做到的就是这个
path_to/valgrind --undef-value-errors=no --error-limit=no --leak-check=yes --log-file=$MY_LOG_FILE my_process.exe
虽然这会导致这样的日志文件不是很详细
==12688== Memcheck, a memory error detector
==12688== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==12688== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==12688== Command: my_process.exe
==12688== Parent PID: 4469
==12688==
而且不是很详细的核心文件
malloc.c:2392: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.
我想做的是有一个详细的 valgrind 核心文件,但不知道该怎么做。 另一个很棒的选择 - 将 gdb 附加到进程,但如果进程在开始时核心如何执行?
感谢您的想法。
【问题讨论】:
【参考方案1】:另一个很棒的选择 - 将 gdb 附加到进程,但如果进程在开始时核心如何执行?
在这种情况下你不需要附加到进程中,你可以从一开始就在 gdb 中运行它:
$ gdb my_process.exe
...
(gdb) run
...
【讨论】:
以上是关于如何获取详细的 valgrind 核心或使用 gdb 将调试附加到核心在启动时转储的进程?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHP 和 GD 获取图像资源大小(以字节为单位)?
如何使用 GD 或 Imagick 在非透明纯色图像内创建透明区域?