用gdb调试lambdas有什么好运气吗?
在debian上尝试了7.2,但似乎不可能进入c++0x lambdas。我能够在一个非常简单的程序中进入lambda(ubuntu 10.04、gdb-7.1、gcc-4.6和用gdb调试lambdas有什么好运气吗?,lambda,c++11,gdb,Lambda,C++11,Gdb,在debian上尝试了7.2,但似乎不可能进入c++0x lambdas。我能够在一个非常简单的程序中进入lambda(ubuntu 10.04、gdb-7.1、gcc-4.6和-g标志) #包括 void sayhello() { std::cout-cutting-edge,也许最好在g++或gdb邮件列表上询问您是否可以详细说明到底出了什么问题?@templatetypedef我无法在lambda函数中一步一步地执行。您是否尝试在lambda中放置断点?可能的副本我必须在lambda中使用
-g
标志)
#包括
void sayhello()
{
std::cout-cutting-edge,也许最好在g++或gdb邮件列表上询问您是否可以详细说明到底出了什么问题?@templatetypedef我无法在lambda函数中一步一步地执行。您是否尝试在lambda中放置断点?可能的副本我必须在lambda中使用它来访问捕获内容。顺便说一句,使用相同的捕获符号我产生垃圾。
#include <iostream>
void sayhello()
{
std::cout << "Hello world" << std::endl;
}
int main ()
{
std::cout << "=========" << std::endl;
([](void (*f)()) {
std::cout << "---------" << std::endl;
f();
std::cout << "---------" << std::endl;
})(sayhello);
}
(gdb) br main
Breakpoint 1 at 0x804869e: file hello.C, line 10.
(gdb) r
Starting program: /tmp/hello
Breakpoint 1, main () at hello.C:10
10 std::cout << "=========" << std::endl;
(gdb) n
=========
15 })(sayhello);
(gdb) s
operator() (this=0xbffff24f, f=0x8048614 <sayhello()>) at hello.C:12
12 std::cout << "---------" << std::endl;
(gdb) n
---------
13 f();
(gdb) s
sayhello () at hello.C:5
5 std::cout << "Hello world" << std::endl;
(gdb) n
Hello world
6 }
(gdb) s
operator() (this=0xbffff24f, f=0x8048614 <sayhello()>) at hello.C:14
14 std::cout << "---------" << std::endl;
(gdb) n
---------
15 })(sayhello);
(gdb) n
main () at hello.C:16
16 }