我已经构建了Intel Pin工具,并在pyvbox的帮助下从Python脚本在VM中启动它:
gs = session.console.guest.create_session('win7', '')
time.sleep(45)
process, stdout, stderr = gs.execute('C:\\Windows\\System32\\cmd.exe', ['/C',
'C:\\Users\\win7\\Documents\\Pin\\pin-3.6-97554-g31f0a167d-msvc-windows\\pin.exe',
'-t',
'C:\\Users\\win7\\Documents\\Pin\\pin-3.6-97554-g31f0a167d-msvc-windows\\MyPinTool.dll',
'-o', outpath + str(fname) + '.out', '-i',
str(icount),'-f','1', '--',
'C:\\Users\\win7\\Documents\\folder1\\' + str(
fname)], timeout_ms=0)
time.sleep(120)
print "STDOUT"
print stdout
print "STDERR"
print stderr
它导致以下输出(这是来自来宾VM的输出,因此在python脚本中不是错误):
A:来源\ pin \ pin \ image.cpp:LEVEL_PINCLIENT :: RTN_Name:2027: 断言失败:RTN_Valid(x)
没有可用的堆栈跟踪引脚:pin-3.6-97554-31f0a167d版权所有(c) 2003-2017年,英特尔公司。保留所有权利。
由销钉工具创建的文件稍后会成功传输到主机。但是,如果我在来宾VM中从命令行调用等效命令,则不会出现错误消息(根据我的经验,如果Intel Pin发生此类错误,您会在命令行窗口中看到它)。另外,对于某些可执行文件,Pin Tool创建的文件可能会更大一些(但到目前为止,我发现它不会影响存储在文件中的结果),因此它的工作时间更长。
所以我很好奇:是什么原因导致这种行为?是pyvbox调用命令行的方式,还是命令本身导致了这种输出?
但是,如果我将timeout_ms从0更改为例如,有趣的是200或-没有错误发生。但是在pyvbox文档中说,timeout_ms = 0会一直等待,直到过程完成。