Malloc仅与valgrind一起使用。如何调试?

时间:2018-07-02 05:09:23

标签: c debugging malloc valgrind distcc

在这里给您一些背景信息,我用valgrind测试的项目是distcc的略微修改版本。失败的功能尚未更改。代码中有问题的确切位置是compress.c中的函数dcc_compress_file_lzo1x。它是这样的:

int dcc_compress_file_lzo1x(int in_fd,
                        size_t in_len,
                        char **out_buf,
                        size_t *out_len)
{
char *in_buf = NULL;
int ret;

if ((in_buf = malloc(in_len)) == NULL) {
    rs_log_error("allocation of %ld byte buffer failed",
                 (long) in_len);
    ret = EXIT_OUT_OF_MEMORY;
    goto out;
}

这里的问题是if语句中的malloc。如果我正常运行该程序,它将随机失败(我将所有内容包装在调试打印中),这意味着在执行malloc时程序崩溃,而不会产生错误打印。另一方面,如果我使用valgrind启动程序,那么一切都会通过,并且valgrind不会产生任何有用的信息。

我不是在寻找简单的答案。我只是想知道如何调试它,因为我没有想法。

0 个答案:

没有答案