Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如何编写一个 C 函数来打印回溯,直到调用该函数。我不想使用任何库。我想编写自己的代码来完成这项工作。 任何人都可以请输入来完成这项任务吗?
你不能在可移植的 C 中编写这样的函数,而且你不能在不了解特定平台和编译器使用的调用约定的情况下编写它。因此,您的问题(目前)缺少回答它所需的所有细节。
如果您想知道 backtrace() 的一般工作原理,您可以研究任意数量的可用实现。
如果您想从头开始实现一个(作业?),请研究您平台的调用约定。
没有可移植的方法来做到这一点,但 gcc 提供了一种半途而废的方法来__builtin_return_address与朋友们一起做。
__builtin_return_address