1
我有一個C++可執行文件,當我用下面的命令C++二進制是完全執行,同時用Valgrind的運行,但沒有運行單獨此二進制
valgrind -v --leak-check=full --show-reachable=yes --track-origins=yes mybinary -mode init > 5.log 2>&1
它退出,0,並且所有的輸出運行此二進制時生成的文件。
但是當我運行這個二進制像
mybinary -mode init > 5.log 2>&1
它的核心在許多地方傾倒(一個接一個的地方)。
爲什麼當我用valgrind跑步時,行爲會改變? valgrind是否設置了任何內部環境變量?
valgrind日誌說什麼? – billz
只有很少的信息,我們可以猜測。我的意思是,你的程序顯示未定義的行爲,並且它在'valgrind'下運行時似乎工作的事實僅僅是偶然。 – syam
在許多地方轉儲內核表明它是多線程的或者使用fork,這意味着在運行valgrind時它的時序會有所不同(它也可能在某些方面同步事物,因爲我確信它有一些鎖以防止它綁定本身變成結)。尋找競爭條件,並分析你的核心轉儲,試圖看看它的去向。 –