如何在不设置断点的情况下查看 LLDB 中当前帧的源代码?

How can I see source for the current frame in LLDB without setting breakpoints?

使用 LLDB 调试简单程序时,如果我将调试器设置为在入口处停止,我看不到当前帧的源代码,只有汇编。

如果设置了断点,我会在遇到断点后查看每一帧的源代码。

如何在不设置断点的情况下查看当前帧的源代码?

我想跟随程序的流程,但不知道哪些代码行或函数可能是 运行。

请注意 list 不够,因为它不显示活动行,只是一些来源。

我正在调试 C++ 代码,不过我认为这不重要。

我不确定 "current frame" 是什么意思。

如果您在调试器中停止程序(使用断点或中断它),那么您应该看到您停止的帧的源代码(如果它是一个有源代码的帧)。

但是调试器在 运行 时不会观察您的程序在做什么。如果它试图这样做,它会过多地干扰程序执行,减慢它,改变线程调度等。调试器非常努力地不这样做。

所以它不能告诉你程序在没有停止的情况下正在执行什么堆栈帧。还有其他工具,例如示例,它使用基于时间的堆栈采样来向您展示程序流程的大致轮廓,但由于这些只是某个时间间隔的示例,因此它们不会获得所有详细信息。

您可以通过在调用上放置自动继续断点并使用执行回溯或源列表的命令来监视调用的某些子集。但是,这可能会大大降低执行速度,具体取决于您要观看的呼叫的热度。