我有一个由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
将无法正确关闭,流将不会刷新,也不会记录任何内容。