如何在CPP文件中为所有函数设置断点
lldb - how to set breakpoint for all functions in cpp file
我正在尝试通过一个大项目>100k loc,但只关心与lib的交互。是否有一种方法可以让lldb在一个源文件中中断所有函数声明?
到目前为止,我已经尝试了
br s -f <file> --func-regex .*
包含从GDB到LLDB的信息和GDB解决方案,但这似乎在文件中的所有函数调用上都被打破,导致4911行源文件的5129匹配
一个可能的解决方案是通过
进行源正则表达式匹配来查找函数调用但是考虑到c++荒谬的解析规则,一个匹配所有大小写的正则表达式是不可能的。
-f
规范确实将断点搜索限制在由<file>
定义的编译单元中,因此它最终包括该编译单元包含的所有模板实例化,如果您使用任何std::
的东西通常是很多,如您所发现的。
调试器通常不知道函数在哪里被声明(它是调试信息的一部分),所以我们可以添加一个选项,将-f视为"声明文件"而不是"comp单元名称"。然后你可以这样说:
(lldb) break set -f foo.h -f foo.cpp --match-declaration-file --func-regex .*
这将是相当直接的添加。如果你有这种倾向,请提交一个增强请求到http://bugreporter.apple.com。
如果你遵循这样写函数的惯例:
void A::foo()
{
...
}
然后你可以对"^{"做一个源正则表达式。这就是这种编码约定的主要原因,它使得函数的开头非常容易挑选。
如果模板实例化主要来自std,您可以找到.o文件并执行如下操作(这是在OS X上):
$ nm <file-basename>.o -s __TEXT __text -j | c++filt | grep -v std
这将生成此.o文件中的非std函数列表,然后您可以将break set -n
添加到每行的开头,并将其添加到。
相关文章:
- 类中的 Arduino 对象构造函数设置垃圾值
- 将复制构造函数设置为private和=delete有什么区别
- 从C++为字符串函数设置_ENV
- 将复制构造函数设置为默认值在继承自 QObject 时不起作用
- 如何将函数设置为变量并从中调用?
- 如何将一个类函数设置为另一个类函数
- (Raspberry Pi 3)如何使用set()函数设置相机属性(来自raspicam/raspicam_cv.h)
- 如何在不更改代码的情况下为所有C++函数设置属性
- 尝试将构造函数设置为 0 - c++ 的未处理异常
- 是否需要为 C++中的一个或多个函数设置类
- C++构造函数设置值
- 将一个对象的函数设置为由arduino库中的另一个对象调用
- 如何使用模板函数设置不同类型的值
- 我可以为并集的C++函数设置默认参数吗
- 如何从成员函数设置类静态数据成员的值
- C++在通过构造函数初始化对象后,用函数设置私有类成员
- 通过C++中的非静态函数设置对C函数指针的回调
- 如何使用 std::bind 将成员函数设置为回调
- 是否可以在不重载的情况下为每个函数设置可变数量的参数
- 通过调用C++函数设置加载器组件