如何编写我自己的打印回溯的函数
如何编写一个 C 函数来打印回跟踪直到该函数被调用。 我不想使用任何库。我想编写自己的代码来完成这项工作。
任何人都可以输入来完成这项任务吗?
How to write a C function to print back trace till that function is called.
I don't want to use any library.I would like to write my own code to do that job.
Can anyone please inputs to achieve this task?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您无法在可移植 C 中编写这样的函数,并且在不了解编译器使用的特定平台和调用约定的情况下也无法编写它。因此,您的问题(目前)缺乏回答它所需的所有细节。
如果您想了解 backtrace() 一般如何工作,您可以研究任意数量的可用实现。
如果您想从头开始实现一个(作业?),请研究您平台的调用约定。
You can't write such a function in portable C, and you can't write it without knowing specific platform and calling conventions used by your compiler. Therefore your question (currently) lacks all the details one would need to answer it.
If you want to know how backtrace() works in general, you can study any number of implementations available.
If you want to implement one from scratch (homework?), study the calling convention for your platform.
没有可移植的方法来做到这一点,但 gcc 提供了一种半干净的方法来使用
__builtin_return_address
和朋友来做到这一点。There's no portable way to do this, but gcc provides a halfway-clean way to do it with
__builtin_return_address
and friends.