,我可以包括Valgrind的頭在運行時知道我的軟件是否已在運行Valgrind的:查找其中的valgrind的版本是在C/C++運行
#include <valgrind/valgrind.h>
bool RunningOnValgrind()
{
return RUNNING_ON_VALGRIND ? true : false;
}
這在valgrind manual被記錄在案。
我希望能夠知道我正在運行的valgrind是否支持AVX指令。我如何編寫一個返回此信息的函數?
從valgrind release notes,我知道這些從版本3.8開始支持。因此,一個解決方案是產生一個進程來執行valgrind --version然後解析輸出,但是必須有更好的方法。
你說的限制是爲什麼我需要在運行時獲得版本而不是編譯時的確切原因! –
對我來說很有意義,正如我的文章所暗示的那樣。但是,它看起來像valgrind沒有API可以在運行時調用來檢索主要/次要版本號,因此在子進程中運行它並解析輸出可能是你留下的 - 並且希望你不是' t使用'--trace-children = yes'選項在valgrind中運行你的程序(因爲有valgrind「valgrind本身」來獲取版本號可能會很慢......) – JohnH
向valgrind的bug跟蹤器提交了一個補丁:https:/ /bugs.kde.org/show_bug.cgi?id=338365。讓我們看看現在會發生什麼...... –