我想知道是否有记录只是的汇编代码指令的一种方式,是执行。这可以通过使用GDB来实现吗?日志汇编代码执行
Q
日志汇编代码执行
-4
A
回答
1
理论上,将CPU置于单步模式非常简单,并且在执行时记录每条指令。实际上,你不能合理地计划这样做的时间超过几秒钟(或者一般订单上的某些事情)。让我们通过一些数学来理解为什么。
现在,我们假设一个地址占用32位。我们假设典型的指令平均使用大约2个字节的数据。一个典型的CPU可能运行在2.5 GHz,并且每个周期执行大约2条指令。因此,记录单个指令需要大约6个字节的数据。 CPU每秒执行大约50亿次。做数学计算,这意味着记录一秒钟的执行将需要大约6 * 50亿字节=每秒30千兆字节(每个核心)。
如果我们把它写入RAM,我们可能预期执行速度会比正常慢一点,所以执行和记录一秒钟将需要几分钟。然而,当我们用完RAM时(以30GB/s,我们会很快),并且必须将数据写入磁盘,我们的带宽(即使是相当快的SSD)也会下降很多,所以执行速度将很快甩掉很多。同样,目前,我(或多或少)假设我们可以完全使用(例如)至少一个内核来收集和记录由另一个内核生成的数据。如果我们想从四核(比如说)中记录数据,那么数据收集可能会减慢一些数据的收集速度,并且(更糟糕的)数据生成的速度也会增加4倍(所以我们有一个核心来收集120 GB/s)。这显然会变得更加困难。
从那里我们遇到了另一个明显的问题:我们将如何处理这个数据的山?考虑到我们生产的数量,显然最好在执行过程中进行尽可能多的处理以找到我们真正关心的数据,而不是仅仅收集所有数据,而不管它最终会变得多么无用。
所有这一切说,我不认为gdb真的是这份工作的正确工具。如果你真的坚持这样做(可能是一个糟糕的主意,但是......),你几乎肯定希望代码专门用于处理这个特定的工作。
相关问题
- 1. 日志执行源代码行
- 2. 用python执行汇编代码
- 3. Java - 执行日志代码的错误
- 4. 汇编代码
- 5. C++汇编代码
- 6. GMP-汇编代码?编译代码
- 7. 汇编&C - 翻译C'S代码汇编
- 8. 如何在CMD Windows XP中执行汇编语言代码?
- 9. 如何在应用程序启动时执行汇编代码
- 10. 如何执行机器代码(学习汇编)
- 11. 在ubuntu上运行汇编代码
- 12. 汇编代码跳过一行?
- 13. 斯卡拉2.12日志汇编SBT 0.13.16
- 14. C++代码中的汇编代码
- 15. 从C#代码生成汇编代码?
- 16. CachedAnonymousMethodDelegate1从代码反汇编代码
- 17. 汇编代码到C代码
- 18. 写汇编代码的C++
- 19. Keil arm startup.s汇编代码
- 20. 在汇编代码中
- 21. 从c反汇编代码#
- 22. sin(x)的汇编代码
- 23. 调试反汇编代码
- 24. 解释汇编代码
- 25. 含义的汇编代码
- 26. Fortran示例代码汇编
- 27. 阅读汇编代码
- 28. 汇编代码说明
- 29. 汇编代码的说明
- 30. C代码MIPS汇编
代码中的所有内容都是*只是程序集* – Ari0nhh
反汇编二进制代码会更容易......这将为您提供所有已执行的指令。如果您需要关注分支等,请添加*特定的*日志代码。 –
[Process Record](https://www.sourceware.org/gdb/wiki/ProcessRecord/Tutorial)可能是您要查找的内容中最接近的。 – ks1322