は、私は次のコードを持っている:Valgrindは認識できない命令
#include <iostream>
#include <random>
int main() {
std::mt19937_64 rng(std::random_device{}());
std::cout << std::uniform_int_distribution<>(0, 100)(rng) << '\n';
}
を私はvalgrind
を使用して、それをプロファイリングしようとするが、それは言う:
vex amd64->IR: unhandled instruction bytes: 0xF 0xC7 0xF0 0x89 0x6 0xF 0x42 0xC1
vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x0 ESC=0F
vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0
==2092== valgrind: Unrecognised instruction at address 0x4cdc1b5.
==2092== at 0x4CDC1B5:std::(anonymous namespace)::__x86_rdrand() (random.cc:69)
==2092== by 0x4CDC321: std::random_device::_M_getval() (random.cc:130)
==2092== by 0x4009D4: main (random.h:1619)
:
--2092-- WARNING: Serious error when reading debug info
--2092-- When reading debug info from /lib/x86_64-linux-gnu/ld-2.22.so:
--2092-- Ignoring non-Dwarf2/3/4 block in .debug_info
私はDebian上で、valgrを使ってgcc 5.3.1でコンパイルしたx86-64プラットフォームで標準パッケージを使用していますind-3.11.0。不正な命令はlibstdC++ 6内にあるようです。
valgrind
にコードをプロファイルするにはどうすればよいですか?
[パッチ内のリンクされた]の1文字(https://github.com/svn2github/valgrind-vex/commit/1ab61656f71e94ce12b68de87f1e28cf3dc0c18c)を変更すると、valgrindが正しく機能するようになりました。 – nwp