将断言输出从 dll 重定向到文件



我有一个由C#程序调用的C DLL。 DLL 充满了assert()语句,没有一个语句足够自信,无法进入我的屏幕。 我知道这是因为断言输出被写入 STDERR(或者可能是 STDOUT)。

有没有办法以某种方式插入断言宏,以便将输出重定向到文件?

也许断言驻留在 dll 中都通过了?

我已经在单声道上进行了以下测试

#include <assert.h>
void foo()
{
    assert(1==2);
}
//~~~~~
[DllImport("mylib.so")]
extern static void foo();
public static void Main (string[] args)
{
  foo();
}

断言失败后,程序立即中止。

如果您只想重定向 stderr,Console.SetError(new StreamWriter("err.log"));...;Console.Error.Close()就足够了。但是,如果程序过早中止,Console.Error将无法正确关闭,流将不会刷新,也不会记录任何内容。

最新更新