首页 > 解决方案 > LLDB 调试 - 忽略特定类的变量以加快调试速度

问题描述

我是 C++ 调试和 LLDB 的新手。我使用 VSCode 及其 c++ 适配器,LLDB 作为调试器,bazel 作为构建系统。我的应用程序处理图像处理。应用程序运行速度很快,但调试速度很慢。那是因为一旦我将图像加载到内存中,遍历每一行大约需要 20 秒到 1 分钟。我的假设是原始图像对于调试器来说太多了。如果我使用小图像,那么我可以在调试器中快速单步执行代码

我的问题是:有没有办法告诉调试器忽略图像加载的变量?或者也许是延迟加载图像变量数据?我对矩阵等其他变量更感兴趣。

标签: c++debuggingvisual-studio-codelldbvscode-debugger

解决方案


除非明确要求,否则底层调试器 lldb 不会获取任何变量。请求变量值的始终是 UI。

在 Xcode 中,如果您关闭 Locals View,Xcode 不会要求 lldb 获取变量。这确实加快了在具有大局部变量的帧中的步进。

然后,如果您需要在单步执行时关注一两个变量,您可以使用工具提示或调试器控制台按需打印它们。您还可以target stop-hooks在 lldb 控制台中进行设置并使用它们来自动打印您正在跟踪的变量。

一些 UI 还将“Locals”视图与“Watched Expression”视图分开,因此您可以关闭前者并将需要查看的变量放在后者中。

我不知道 VSCode 是否允许您关闭 Locals 视图,但如果可以,这可能是处理此问题的一种方法。


推荐阅读