当前位置: 首页 > 面试题库 >

打印出堆栈指针的值

云浩然
2023-03-14
问题内容

在Linux(Debian和Ubuntu)中,如何在C的堆栈指针处输出当前值?

我尝试了google,但未找到任何结果。


问题答案:

不能移植甚至不能保证正常工作的一个技巧是简单地打印出本地地址作为指针。

void print_stack_pointer() {
  void* p = NULL;
  printf("%p", (void*)&p);
}

这实际上将打印出其地址p与当前堆栈指针的近似值



 类似资料:
  • 问题内容: 在C语言中,当我从函数返回堆栈创建的变量的指针时,在函数返回后内存将被丢弃,从而使指针无法取消引用。但是在Go中,编译器没有给我任何错误。这是否意味着这样做是安全的? 问题答案: 是的,这是安全的,并且是Go编程中的常规模式。Go使用转义分析来移动带有指针的所有值,这些指针会自动将栈转义到堆。您无需担心在何处分配值。 从Go常见问题解答中:“我如何知道是在堆还是在堆栈上分配了变量?”

  • 问题内容: 我正在寻找一种在PHP中打印调用堆栈的方法。 如果函数刷新IO缓冲区,则奖励积分。 问题答案: 如果要生成回溯,则正在寻找 和/或 。 例如,第一个将为您提供一个像这样的数组 (引用手册) : 它们显然不会刷新I / O缓冲区,但是您可以使用 和/或自己进行操作 。 (请参阅第一个手册页,以了解为什么使用“和/或” ;-))

  • 问题内容: 是否有一种特殊的机制来强制scrapy打印出所有python异常/堆栈跟踪。 我犯了一个简单的错误,即弄错了一个列表属性,导致AttributeError出现,该错误未在日志中完整显示: 因此它显示的AttributeError计数为1,但是没有告诉我在哪里以及如何进行操作,我不得不手动在代码中放置ipdb.set_trace()来找出哪里出错了。Scrapy本身继续执行其他线程而不打

  • 问题内容: 如何将异常的堆栈跟踪信息打印到stderr以外的流上?我发现的一种方法是使用getStackTrace()并将整个列表打印到流中。 问题答案: 可以接受or或参数: 也就是说,请考虑将SLF4J之类的记录器接口与LOGBack或log4j之类的记录实现一起使用。

  • 我使用以下代码打印try-catch块中发生的任何异常,但是当异常发生时,logback不会打印完整的堆栈跟踪,而是写入一行错误(它没有明确说明是什么导致了它。我如何在logback输出中打印完整的堆栈跟踪? 尝试捕获异常的catch块 日志返回错误输出:

  • 我想按相反的顺序打印stackx,怎么做?谢谢你..