在我的vim代码中,我做了很多更改,然后做了一个ZZ
(保存并退出).但后来我意识到我不需要那些改变.有没有一种方法可以在使用某些缓冲区进行更改之前返回状态,在缓冲区中仍可能存储该数据.保存和退出后我没有做任何更改.
我有一个带有编码的protobuf数据的coredump,我想解码这些数据并查看内容.我有.proto文件,它在原始协议缓冲区中定义此消息.我的proto文件看起来像这样:
$ cat my.proto
message header {
required uint32 u1 = 1;
required uint32 u2 = 2;
optional uint32 u3 = 3 [default=0];
optional bool b1 = 4 [default=true];
optional string s1 = 5;
optional uint32 u4 = 6;
optional uint32 u5 = 7;
optional string s2 = 9;
optional string s3 = 10;
optional uint32 u6 = 8;
}
Run Code Online (Sandbox Code Playgroud)
和protoc版本:
$ protoc --version
libprotoc 2.3.0
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法:
从核心转储原始数据
(gdb) dump memory b.bin 0x7fd70db7e964 0x7fd70db7e96d
把它传递给protoc
//proto file (my.proto) is in …
我有一个Linux内核驱动程序和一个与之交互的用户应用程序.内核驱动程序中存在死锁.我在Linux内核中遇到了这个名为" lockdep "的功能.我能够配置它并重新编译我的内核(我确实在/ proc中看到了lockdep文件夹).但我不知道如何推断此工具的输出或如何使用此工具调试驱动程序.任何帮助将非常感谢.谢谢!
我正在尝试学习C++,并尝试解决一个问题,在这个步骤中给出了许多步骤以及可以采用的步骤的数量,给出了爬上台阶的可能方法的所有排列.因此,例如,如果有5个步骤可以攀爬,我可以一次向上移动1步,一次向上移动2步,或者一次向上移动3步,我需要打印出1,2和3的所有排列,加起来5: [1, 1, 1, 1, 1]
,[1, 1, 1, 2]
....
我开始使用这段代码(它还没有完成),但是我收到了这个错误:
Undefined symbols for architecture x86_64:
"_num_steps(int, std::__1::vector<int, std::__1::allocator<int> >, std::__1::vector<std::__1::vector<int, std::__1::allocator<int> >, std::__1::allocator<std::__1::vector<int, std::__1::allocator<int> > > >, std::__1::vector<std::__1::vector<int, std::__1::allocator<int> >, std::__1::allocator<std::__1::vector<int, std::__1::allocator<int> > > >)", referenced from:
num_steps(int, std::__1::vector<int, std::__1::allocator<int> >) in num_steps-FTVSiK.o
ld: symbol(s) not found for architecture x86_64
Run Code Online (Sandbox Code Playgroud)
我真的不明白我做错了什么.如果我能得到一些帮助,我会很感激.谢谢!
#include <iostream>
#include <vector>
#include <string>
#include <cmath>
using namespace std;
//prototypes
void _num_steps(int amount, vector<int> possible_steps, vector<vector<int>> steps_list, vector<vector<int>> result);
int sum(vector<int> steps_list);
void num_steps(int …
Run Code Online (Sandbox Code Playgroud) 我正在阅读这篇文章,但我的问题是在一个通用的层面,我正在考虑以下几点:
O(1)
或更改CFS
为a real time scheduler
,它是否会成为RTOS?我真的很感激它的一些输入/见解,如果我对某事有误,请纠正我.
我正在比较一些系统调用,我从/向内存读/写.是否有任何API定义来测量页面错误(页面输入/输出)C
?
我找到了这个库 libperfstat.a,但它是为了AIX
,我找不到任何关于linux的东西.
编辑:
我知道linux中的time
&perf-stat
命令,只是探索我是否可以在C
程序中使用.
从linux socket手册页:
SO_PRIORITY
为要在此套接字上发送的所有数据包设置协议定义的优先级.Linux使用此值来排序网络队列:可以首先处理具有更高优先级的数据包,具体取决于所选的设备排队规则.
这是使用以下设置:
int optval=7 // valid values are in the range [1,7]
// 1- low priority, 7 - high priority
setsockopt(socket, SOL_SOCKET, SO_PRIORITY, &optval, optlen)
Run Code Online (Sandbox Code Playgroud)
并说,这个过程有:
a.来自socket_1
- socket_10
,
b的10个低优先级套接字(优先级= 4).1个高优先级套接字(优先级= 7) - socket_11
在以下场景中会发生什么:
send()
:进程发送多个消息socket_1
- socket_10
&on socket_11
,IMO上的消息socket_11
将优先于发送的消息socket_1
- socket_10
.
recv()
:如果有在上述所有插口接收mutilple封邮件,不socket_11
超过读取信息获得较高的优先级socket_1
- socket_10
?
有测量从命令行中使用的工具,如插座优先级的方式lsof
,netstat
等等?
我正在调试我的内核模块,它似乎有内存损坏,基本上由alloc_netdev()为'net_device'实例分配的一块内存已经损坏.
1)我打开CONFIG_DEBUG_KERNEL
,CONFIG_DEBUG_SLAB
,CONFIG_DEBUG_KMEMLEAK
在我的内核的.config
,但是不知道从什么期望kmemleak
.是否应该在我阅读时打印出可疑内存泄漏的跟踪转储/sys/kernel/debug/kmemleak
?有没有办法重置累积的统计数据/信息kmemleak
?最重要的是 - 任何人都可以帮助破译输出,例如:
unreferenced object 0xc625e000 (size 2048):
comm "swapper", pid 1, jiffies 4294937521
backtrace:
[<c00c89f0>] create_object+0x11c/0x200
[<c00c6764>] __kmalloc_track_caller+0x138/0x178
[<c01d78c0>] __alloc_skb+0x4c/0x100
[<c01d8490>] dev_alloc_skb+0x18/0x3c
[<c0198b48>] eth_rx_fill+0xd8/0x3fc
[<c019ac74>] mv_eth_start_internals+0x30/0xf8
[<c019c5fc>] mv_eth_start+0x70/0x244
[<c019c810>] mv_eth_open+0x40/0x64
[<c01e00f0>] dev_open+0xb4/0x118
[<c01df788>] dev_change_flags+0x90/0x168
[<c001a3e4>] ip_auto_config+0x1bc/0xecc
[<c00212f4>] do_one_initcall+0x5c/0x1bc
[<c00083d0>] kernel_init+0x8c/0x108
[<c0022f58>] kernel_thread_exit+0x0/0x8
[<ffffffff>] 0xffffffff
Run Code Online (Sandbox Code Playgroud)
2)我也想知道我是否可以在这个内存上应用一些"只读"属性,这种方式我希望Oops
在有人试图修改内存时生成.听起来合理吗?
感谢任何建议,谢谢.
标记
我正在研究n-queen回溯.有人可以向我解释如何other_row_pos
检查对角线?我不确定它为什么会起作用或者它是如何工作的.
取自wikibooks - http://en.wikibooks.org/wiki/Algorithm_Implementation/Miscellaneous/N-Queens:
bool isSafe(int queen_number, int row_position) {
// Check each queen before this one
for(int i=0; i<queen_number; i++) {
// Get another queen's row_position
int other_row_pos = position[i];
// Now check if they're in the same row or diagonals
if(other_row_pos == row_position || // Same row
other_row_pos == row_position - (queen_number-i) || // Same diagonal
other_row_pos == row_position + (queen_number-i)) // Same diagonal
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud) cscope
打开我的文件vi
.有没有办法改变它,以便它打开文件vim
?
编辑:我试过:
export CSCOPE_EDITOR=vim
Run Code Online (Sandbox Code Playgroud)
出于一些奇怪的原因,如果我:help
在打开的文件上键入,它会显示vim help
哪个表明它已打开vim
但似乎没有读取我的文件.vimrc
.我该怎么读它.vimrc
?
编辑2:机器/工具信息
[user@machine] $ printenv | grep -i cscope
CSCOPE_EDITOR=vim
[user@machine] $ vim --version
VIM - Vi IMproved 7.0 (2006 May 7, compiled Jul 10 2012 08:48:09)
Included patches: 1, 3-4, 7-9, 11, 13-17, 19-26, 29-31, 34-44, 47, 50-56, 58-64, 66-73, 75, 77-92, 94-107, 109, 202, 234-237
[user@machine] $ cscope -V
cscope: version 15.5
Run Code Online (Sandbox Code Playgroud)