我有一个bug(内存泄漏)软件.作为证据,我有1GB的core.dump文件.堆大小是900MB,显然,分配的东西,但不释放内存.
所以,我有一个像这样检查的内存区域.
(gdb) x/50000s 0x200000000
Run Code Online (Sandbox Code Playgroud)
然而,这很难用肉眼猜测,哪个对象或结构没有被释放.我追踪的想法是,"将gdb格式化的输出保存到文件中,并运行模式匹配以查看哪个魔术字符串出现最多." 所以,这是我的问题:
如何将以下命令的输出保存到文本文件中,以便我可以编写分析器?
(gdb) x/10000000s 0x20000000 <-- I need this output into a file
Run Code Online (Sandbox Code Playgroud) 在vim中,可以通过'gv'命令调用可视块,以便可以轻松应用多个命令.(例如,注释掉,然后缩进,然后do_something_fun).
在Emacs中,如何实现这一目标?[C-xC-x]仅在当前光标位置停留在前一个块结束的位置时有效.如果前一个块被更改,则最接近的是通过"指向寄存器"和"跳转到寄存器".
只是我很好奇是否有一个Emacs内置命令一次性完成这个.
我遇到了纯python和C python模块的情况.总结一下,我如何在C模块中接受和操作python对象?我的python部分看起来像这样.
#!/usr/bin/env python
import os, sys
from c_hello import *
class Hello:
busyHello = _sayhello_obj
class Man:
def __init__(self, name):
self.name = name
def getName(self):
return self.name
h = Hello()
h.busyHello( Man("John") )
Run Code Online (Sandbox Code Playgroud)
在C中,需要解决两件事.首先,我该如何接收物品?第二,如何从对象中调用方法?
static PyObject *
_sayhello_obj(PyObject *self, PyObject *args)
{
PyObject *obj;
// How can I fill obj?
char s[1024];
// How can I fill s, from obj.getName() ?
printf("Hello, %s\n", s);
return Py_None;
}
Run Code Online (Sandbox Code Playgroud) 我的Emacs版本是23.0.91.1.Ubuntu还没有赶上23.1.无论如何,
我有一个strace捕获,并希望看到文件描述符的使用.所以,希望看到"^(open | socket)"正则表达式发生,但是没有用.分组正则表达式在Emacs regexp中不起作用?
所以,从我的日志文件,我处理了一些字符串,最后得到了这个结果,让我们说缓冲区名称为" 1 "
12
23
34
45
Run Code Online (Sandbox Code Playgroud)
如何获得给定缓冲区的总和?
(defun sum-of-buffer (buf)
(interactive "bBuffer Name: ")
....
(message "%i" sum))
Run Code Online (Sandbox Code Playgroud)
还是有方便的功能组合?