【发布时间】:2023-03-14 03:26:01
【问题描述】:
我想使用两组不同的命令参数来跟踪 Nmap 的执行情况,并对结果进行比较,以便我可以了解为什么在代码中采用不同的路径。
在我的 Win32 XP SP3 机器上,nmap -F -v -d -n <target_host> 和 nmap -F -v -v -d -n <target_host> 两个命令在代码中应该采用几乎相同的路径(除了处理额外的 -v arg 之外),但它们没有。我发现调用getAdapterAddresses 返回ERROR_INVALID_PARAMETER 存在一些问题,这导致nmap 退出并显示一条错误消息,该错误消息与参数略有不同。我已经提交了一个似乎可以解决 getAdapterAddresses 问题的补丁,但现在我想找出应用程序在不同位置退出的原因(请参阅此nmap-dev mailing-list post 及其后续跟进以了解更多背景信息)。
该项目是为 Visual Studio Express 2010 VC++ 设置的,我正在寻找一种方法来跟踪上述 Windows 框上的执行情况,然后对结果进行比较。
我应该寻找哪些工具?
【问题讨论】:
-
对于系统调用,你可以试试STraceNT。对于库调用,请查看 Sysinterals 的Process Monitor。
-
感谢@KerrekSB,我确实需要跟踪 nmap 函数,但我会尝试您的建议,看看它们是否有什么好处。
-
STraceNT 产生了两个输出 ca。 1GB 几乎没有共同点,所以不是很有用。
-
有趣。好吧,如果系统调用都不同,那么我假设程序在两种情况下确实采用了非常不同的代码路径。
-
在进行参数解析之前,路径至少应该相同。我想我只需要跟踪 nmap 函数调用 - processmon 还给了我输出,这些输出非常不同且难以匹配
标签: c++ windows visual-c++ profiling trace