我正在寻找一种方法来找出我的程序花费时间的地方.我阅读了perf教程并试图描述那里描述的睡眠时间.我写了最简单的程序来分析:
#include <unistd.h>
int main() {
sleep(10);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后我用perf执行它:
$ sudo perf record -e sched:sched_stat_sleep -e sched:sched_switch -e sched:sched_process_exit -g -o ~/perf.data.raw ./a.out
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.013 MB /home/pablo/perf.data.raw (~578 samples) ]
$ sudo perf inject -v -s -i ~/perf.data.raw -o ~/perf.data
build id event received for [kernel.kallsyms]: d62870685909222126e7070d2bafdf029f7ed3b6
failed to write feature 2
$ sudo perf report --stdio --show-total-period -i ~/perf.data …Run Code Online (Sandbox Code Playgroud) 我正在读一本关于Rust的书,并开始玩Rust宏.所有元变量类型都在那里解释并有示例,除了最后一个 - tt.根据这本书,它是一个"单一的标记树".我很好奇,它是什么,它用于什么?你能举个例子吗?
以下程序崩溃与segmention故障:
#include <iostream>
#include <vector>
using namespace std;
struct data
{
data() : a(random()), b(random()), v({random(), random(), random()}) {}
data(data&& m) noexcept : a(m.a), b(m.b), v(std::move(m.v)) { }
long int a;
long int b;
std::vector<long int> v;
};
data&& randomize()
{
srandom(time(0));
data d;
d.a = random();
return std::move(d);
}
int main( int argc, char** argv )
{
data d = randomize();
cout << d.a << " " << d.b << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该代码使用g ++版本4.7.2(Debian 4.7.2-5)编译:
g++ -std=c++11 …Run Code Online (Sandbox Code Playgroud) 我已经阅读了本教程,但我还没有找到任何关于反向调试的内容.lldb是否有像target recordgdb 一样的功能?如果是,我在哪里可以阅读它?
我在Linux上用c ++编写了一个简单的tcp/ip服务器.我正在使用异步套接字和epoll.当我收到EPOLLIN事件时,是否有可能找出可供读取的字节数?