小编sig*_*ice的帖子

GDB无法访问mmap()'d内核分配的内存?

我遇到了GDB和内核空间中分配的缓冲区问题.缓冲区由内核模块分配,内核模块应该分配连续的内存块,然后通过mmap()调用将内存映射到用户空间.但是,GDB似乎无法随时访问这些块.例如,在GDB中遇到断点后:

(gdb) x /10xb 0x4567e000
0x4567e000:     Cannot access memory at address 0x4567e000
Run Code Online (Sandbox Code Playgroud)

但是,在/ proc // smaps中查看应用程序当前映射的内存区域显示:

4567e000-456d3000 rwxs 8913f000 00:0d 883        /dev/cmem
Size:                340 kB
Rss:                 340 kB
Pss:                   0 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:         0 kB
Referenced:            0 kB
Swap:                  0 kB
Run Code Online (Sandbox Code Playgroud)

我甚至考虑这个的原因是因为在运行期间的某个时刻,这个缓冲区地址(或以类似方式分配的另一个)会导致SIGSEGV.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x49aea490 (LWP 652)]
0x402e4ea8 in fwrite () from /lib/libc.so.6
(gdb)
(gdb)
(gdb) where
#0  0x402e4ea8 in fwrite () from /lib/libc.so.6
#1 …
Run Code Online (Sandbox Code Playgroud)

c c++ gdb mmap

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

Quicklisp无法为Hunchentoot安装LIBSSL

我今天在Win7 PC上安装了CLisp.请不要批评我的环境选择,但如果这个特殊的设置有与Quicklisp和Hunchentoot相关的缺陷,请随时指出它们.我下载并安装了Quicklisp并尝试使用它来获取Hunchentoot - 但是,看起来我有错误.

我输入(ql:quickload"hunchentoot"),一切似乎都很好,但一方面 - CL + SSL?无论出于何种原因,特定组件都不会安装.无论如何,这是输出:

*** - Unable to load foreign library (LIBSSL).
FFI:OPEN-FOREIGN-LIBRARY: Cannot open library "libssl32.dll"
Run Code Online (Sandbox Code Playgroud)

有谁知道这意味着什么,或者我如何安装这个难以捉摸的库?我试图通过Quicklisp安装CL + SSL,我得到了同样的错误."无法打开库"libssl32.dll"

编辑:我尝试使用LispBox安装Hunchentoot并得到完全相同的错误.

clisp common-lisp quicklisp

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

apply&funcall - 不同的结果

ANSI Common Lisp.为什么我在最后一个案例中得到了另一个答案?

(list 1 2 3 nil) ; (1 2 3 nil)
(funcall (function list) 1 2 3 nil) ; (1 2 3 nil)
(apply (function list) '(1 2 3 nil)) ; (1 2 3 nil)
(apply (function list) 1 2 3 nil) ; (1 2 3)
Run Code Online (Sandbox Code Playgroud)

lisp clisp common-lisp ansi-common-lisp

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

为什么 `accept(2)` 需要 `sockaddr` 长度作为单独的指针?

我正在努力理解 的原型accept(2)

我有一个简单的服务器,它接受连接并向客户端返回“Hello world!\n”。该系统调用accept(2)使用一个指向 的指针struct sockaddr和一个指向 an 的指针socklen_t来存储结构的长度。但sockaddr已经有一个名为 的字段sa_len,这似乎就是为此而完成的。

另外,我有一个简单的服务器(在 OSX 下编译,希望也是在 Linux 下编译),它打印出我自己socklen_t传递给 Accept 的值,然后打印出 的值sa_len:在 OSX 上它们是相同的,在本例中为 28。

编辑:经过更多测试,似乎sa_len不一定与指针中存储的长度相同。

为什么accept(2)需要长度作为单独的指针?


作为参考,我在下面发布了示例服务器。您可以使用以下命令进行编译:

gcc -Wall -Wextra main.c
Run Code Online (Sandbox Code Playgroud)

然后运行:

./a.out
Run Code Online (Sandbox Code Playgroud)

在另一个终端中,连接到它:

telnet 127.0.0.1 3000
Run Code Online (Sandbox Code Playgroud)
#include <errno.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netdb.h>
#include <stdio.h>
#include <netinet/in.h>
#include <strings.h>

// default port if none if passed in the program arguments
#define FTP_PORT_DEFAULT …
Run Code Online (Sandbox Code Playgroud)

c unix macos

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

访问结构成员的模板函数

我有一个包含其他结构以及原始数据类型的结构。我希望能够使用模板函数访问每个成员,包括主结构中包含的结构的成员。

例如:

struct B {
    int y;
    int z;
};

struct A {
    int x;
    B b;
};

template <typename TMember>
bool doSomething(A *a, TMember member) {

    a->*member = 5;  // some code accessing member

}

// Then access it with:

doSomething(&myA, &A::x);

// and likewise

doSomething(&myA, &A::b.y);
Run Code Online (Sandbox Code Playgroud)

但是,第二个不会编译并抛出“引用中缺少对象”错误。我认为这是因为 A 没有成员?

是否有办法获得我想要的功能,或者需要编码不同的功能?

(请注意,这只是一个示例,我的代码包含更大的结构,比仅仅编写第二个函数可以节省更多时间。)

谢谢!

c++ templates struct

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

如果文件未以sudo身份打开,则系统调用open C无法打印文件内容

所以我创建了一个新文件:

 fd = open("tester.txt", O_CREAT | O_RDWR);
Run Code Online (Sandbox Code Playgroud)

然后使用系统调用写我添加一些信息.但是当我尝试从文件中读取信息时,无法进行.使用我发现的终端,打开文件的唯一方法是使用sudo成功编写内容.但是,我的程序不能是root.那么,如何打开文件,向其中写入一些内容并且不关闭C程序输出文件.

c operating-system file system-calls root

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

Blender-蟒蛇

如何将Blender指向我安装的python版本

python blender

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

使用任何语言的Slickest REPL控制台

REPL控制台的许多语言都具有自动完成和智能感知等附加功能.例如,iPython,Mathematica和PyCrust都在努力超越基本的读取eval循环.REPL在交互式探索非常重要的语言中特别有用,例如Matlab或R.

我正在寻找灵感.什么应用程序提供最简洁的REPL?或者您一直希望在您选择的REPL中存在哪些功能?

python console matlab

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

如何在SICP的图片语言中使用框架?

我似乎无法理解SICP中帧的实现.

这本书说明

我们将使用单位平方(0 <x,y <1)中的坐标来指定图像

图像如何表示为坐标?我能想到的唯一解释是,所有图像,即线条,只能映射到边界不能超过单位平方的边框.但我对此表示怀疑,因为书中的下一行解释了"框架坐标图"

地图通过将矢量v =(x,y)映射到矢量和Origin(Frame)+ x*Edge1(Frame)+ y*Edge2(Frame),将单位正方形转换为帧

向量(0,0)被映射到帧的原点,(1,1)被映射到与原点对角的顶点,只会增加我的困惑.这些载体是什么?图像的起源还是什么?

我无法理解这一点,它阻止我进一步深入到文本中,因为之后所讨论的一切都建立在这个概念之上.如果我能够详细解释任何读过这本书的人是如何理解这个想法的话,我会觉得非常有帮助.

scheme image sicp

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

我可以使用USB转串口适配器与VMWare Fusion的开发板通信吗?

我有一台在VMWare Fusion上运行的Linux虚拟机(在Mac OS X上),我打算将其用作嵌入式系统的开发环境.我的Linux VM是否可以使用USB转串口适配器与我的嵌入式系统的串口通信?我应该得到什么样的适配器的任何建议?

linux embedded vmware serial-port usbserial

2
推荐指数
1
解决办法
5513
查看次数