小编Pav*_*dov的帖子

用perf来分析睡眠时间

我正在寻找一种方法来找出我的程序花费时间的地方.我阅读了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)

c linux profiling perf

18
推荐指数
2
解决办法
3904
查看次数

tt元变量类型在Rust宏中意味着什么?

我正在读一本关于Rust的书,并开始玩Rust宏.所有元变量类型都在那里解释并有示例,除了最后一个 - tt.根据这本书,它是一个"单一的标记树".我很好奇,它是什么,它用于什么?你能举个例子吗?

macros metaprogramming rust rust-macros

17
推荐指数
1
解决办法
2649
查看次数

移动std :: vector时的分段错误

以下程序崩溃与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)

c++ g++ move-semantics c++11

7
推荐指数
1
解决办法
2652
查看次数

使用lldb进行反向调试

我已经阅读了本教程,但我还没有找到任何关于反向调试的内容.lldb是否有像target recordgdb 一样的功能?如果是,我在哪里可以阅读它?

reverse-debugging lldb

7
推荐指数
1
解决办法
2494
查看次数

我如何获得可在linux上的异步套接字上读取的字节数?

我在Linux上用c ++编写了一个简单的tcp/ip服务器.我正在使用异步套接字和epoll.当我收到EPOLLIN事件时,是否有可能找出可供读取的字节数?

c++ sockets linux asyncsocket

3
推荐指数
1
解决办法
3771
查看次数