那个让我感到惊讶的是,当tab为断点自动完成时,对同一个方法出现了两个选项。
test::TestFoo::SendFoo(short)
test::TestFoo::SendFoo(short)::fooID
关于cpp:
bool TestFoo::SendFoo( short x )
{
...
static unsigned int fooID = 0;
为什么gdb不同?使用这一个或另一个有什么好处?
标记为C ++的问题,以避免来自C static的任何误解。
gdb --version
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-56.el6)
...
答案 0 :(得分:2)
SendFoo::fooID
和SendFoo
是两种不同的符号,我可以想象gdb为您提供的两个断点会有所不同 - 虽然我对它不是很熟悉:
定义/初始化fooID
的行将仅在整个程序中被命中一次,因此该行中的断点也应仅被命中一次。每次调用函数时都应该触发函数级断点,因此存在很大的差异。
AFAIK函数作用域static
对C和C ++都是一样的 - 一个在该函数的所有调用之间共享的变量,并在第一次调用该函数时初始化。