Intel PIN技术问询:如何获取"--"后的应用程序参数
获取Intel PIN中"--"后的应用程序参数
在Intel PIN中,--之后的内容是目标程序及其运行参数,这部分不属于PIN工具的KNOB参数范畴,所以用KNOB_BASE::StringLongAll()无法获取。你可以通过以下两种方式获取:
方法1:使用PIN_GetCommandLineArguments() API
这个API会直接返回目标程序的完整命令行(包含程序名和所有参数),示例代码如下:
#include <pin.H> #include <iostream> int main(int argc, char* argv[]) { if (PIN_Init(argc, argv)) { return 1; } // 获取目标程序的完整命令行参数 const char* targetCmdLine = PIN_GetCommandLineArguments(); std::cout << "目标程序命令行:" << targetCmdLine << std::endl; // 后续PIN初始化与工具逻辑 PIN_StartProgram(); return 0; }
调用后会直接得到somebinary input这类完整字符串。
方法2:拆分目标程序路径与独立参数
如果需要分别获取目标程序路径和单独的参数,可以使用两个专用API:
PIN_GetApplicationPath():返回目标程序的完整路径(例如/usr/local/bin/somebinary)PIN_GetApplicationArguments():返回目标程序的参数部分(例如input)
示例代码片段:
const char* appPath = PIN_GetApplicationPath(); const char* appArgs = PIN_GetApplicationArguments(); std::cout << "目标程序路径:" << appPath << std::endl; std::cout << "目标程序参数:" << appArgs << std::endl;
注意:上述所有API需要在PIN_Init()执行完成后、PIN_StartProgram()调用前执行,才能正确获取到参数。
内容的提问来源于stack exchange,提问作者M4nval
相关产品推荐
相关产品推荐

