捕捉我習慣叫我的程序與此線在bash shell中捕獲所有輸出和錯誤消息在日誌文件中核心轉儲信息沒有在STDERR
./a.out input.txt 2>&1 | tee log
日誌文件顯示錯誤,但通過檢查日誌顯然存在問題,程序在執行過程中突然終止。
我也嘗試了這些,但結果是一樣的:
./a.out input.txt > log 2>&1
./a.out input.txt |& tee log
當我運行沒有任何這樣的重定向:
./a.out input.txt
我看到在我的終端窗口中的錯誤信息結束於:
*** Error in `./a.out': free(): invalid pointer: 0x000000000169b268 ***
Aborted (core dumped)
那麼,爲什麼我不能捕獲我的日誌中的「核心轉儲」消息?我該怎麼做才能做到這一點?
某些程序只能打印某些消息到標準交互式shell)。當stderr連接到管道時,這些消息可能會被抑制。 – 4ae1e1
我的猜測是你的shell在重定向輸出崩潰的程序之後打印出「Error in x:free()」等消息。你可以嘗試在一個子shell中運行這個進程:'$(./a.out)> log> 2>&1' - 我會嘗試,但是沒有Linux的方便。 –
我寫了這個程序,我沒有做任何特別的事情,不管它是否連接到tty。這是我寫的一個簡單程序,用於動態數組的遞歸合併排序並刪除它們。我在Ubuntu下用g ++編譯。 – Convergent