小编Gab*_*abe的帖子

在 linux 内核中,对 kfree 的调用会休眠吗?

标题几乎就是问题...

我正在编写一些使用自旋锁来帮助列表管理的代码。关于自旋锁的文档非常清楚不调用任何会休眠的东西。我知道有一些方法可以分配“原子”内存,但我没有看到任何关于 kfree 或释放内存的信息。

直觉告诉我它不应该睡觉,但我还没有发现这是明确的。

linux kernel memory-management spinlock

5
推荐指数
1
解决办法
1052
查看次数

如何将字节从ctypes结构复制到从create_string_buffer创建的缓冲区

我有一个ctypes结构(例如):

from ctypes import *
class Foo(Structure):
   _fields_ = [('f1',c_uint),
               ('f2',c_uint)]
Run Code Online (Sandbox Code Playgroud)

我想将该结构的一个实例复制到一个从create_string_buffer创建的缓冲区(它的大小比单个Foo实例所需的大).

例:

f = Foo()
f.f1=1; f.f2=2;
buf = create_string_buffer(100)
buf[0:sizeof(f)] = f
Run Code Online (Sandbox Code Playgroud)

我知道你可以在文件对象的结构上读取和写入数据(即打开('bar','rb').readinto(f)),所以似乎应该有一些方法可以轻松地做到这一点. .

python ctypes

4
推荐指数
1
解决办法
7021
查看次数

如何使用 gdb 按名称显示 vtable

在有故障转储的地方调试时,vtable 指针是内存中对象的良好指示器。

我想在 gdb 中做的是能够通过执行类似的操作来查询 vtable

info address 'vtable for Bar'
Run Code Online (Sandbox Code Playgroud)

但是,我找到的唯一方法(不需要对象的有效实例)是对 vtable 使用损坏的名称。

例子:

info address _ZTV3Bar
Run Code Online (Sandbox Code Playgroud)

尝试找出 vtable 损坏的名称并不是世界末日,但它很烦人(即使用 objdump -t myexecutable)。

有没有人知道我可以以一种不那么痛苦的方式找到类型的 vtable 地址的方法(不需要类型的有效实例)?
- 规则:不能要求有问题的对象的有效实例并在对象中找到 vtable 指针。

c++ debugging gdb vtable

3
推荐指数
2
解决办法
6659
查看次数

标签 统计

c++ ×1

ctypes ×1

debugging ×1

gdb ×1

kernel ×1

linux ×1

memory-management ×1

python ×1

spinlock ×1

vtable ×1