linux-kernel相关内容
- abbrev-commit 标志可以与 git log 和 git rev-list 为了显示部分前缀而不是完整的40个字符的提交对象的SHA-1哈希值。根据 Pro Git book 它默认使用七个字符,但如果需要使它们更长以保持SHA-1清晰[...] 另外,短SHA至少有4个字符长。仍然根据Pro Git书籍, 一般而言,8到10个字符足以在项目中独一无二。 举个
..
我为一家使用Linux构建嵌入式系统的公司工作。从历史上看,我们一直使用CVS来存储我们的内核工作。我们的内核最终成为以下集合: 我们专有硬件的驱动程序 随机修复我们使用的Linux版本 非专有硬件驱动程序 随机yukky为我们的应用程序量身定做Linux 我们正处于我们想要在新版本上重新构建一些旧内核的阶段,以及将我们陈旧的CVS工作流修复为基于变更集的东西。明显的选择是git
..
我有一个使用TCP套接字用C编写的网络程序。有时客户端程序会永远挂起,期待从服务器输入。具体而言,客户端挂在fd上的select()调用集上,用于读取服务器发送的字符。 我使用strace来知道进程卡在哪里。但是,有时当我挂上挂起的客户端进程时,它会立即恢复执行并正常退出。并非所有挂起的进程都表现出这种行为,即使我将它们附加到strace中,一些进程仍然卡在select()中。但是大多数进程
..
我想知道如何使用QEMU和gdb调试Linux内核。我在我的虚拟机中编译了新的内核linux-3.18.6。我的VM环境是centos,内核版本是3.10.0-327.el7.x86_64。我使用命令“qemu-system-x86_64 -kernel /usr/src/linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S”来运行
..
我将所有 CONFIG_DEBUG _ 相关选项配置为 y ,但是当我尝试调试内核时,它发现没有调试符号: gdb /usr/src/linux-2.6.32.9/vmlinux/proc/kcore 读取/usr/src/linux-2.6.32.9/vmlinux...中的符号(没有找到调试符号)...完成。 为什么? 解决方案 这是我迄今为止最好的猜测
..
我遵循以下指南: https:/ /www.kernel.org/doc/Documentation/gdb-kernel-debugging.txt 当我尝试使用以下命令加载模块符号时: (gdb)lx-symbols gdb表示该命令未定义。我如何将这些helper命令添加到gdb中? gdb info:gdb-7.6.1-51.el7.x86-64在Centos 7.0
..
我想用gdb查看我的GDTR / LDTR / TTR和段寄存器 不可见部分(x86) 在gdb中输入“p / x $ gdtr”.... etc 但结果是“$ 6 =值无法转换为整数“ ,在gdb中输入”p / x $ cs“ 唯一的结果是CS,只是可见的部分 pre > 谁能告诉我如何查看这些值? 感谢您的回答 解决方案 如果GDB有这样一个函
..
我在调试修改后的Linux-3.11.0内核时遇到问题。 为了调试代码,我使用: GDB 7.6 QEMU 1.6。 5 Linux内核3.11.0 我的系统具有Intel(R)Core )运行Ubuntu 12.10的i7-2760QM CPU @ 2.40GHz我使用'make menuconfig'创建了一个配置文件来编译修改后的内核。 (在“内核黑客”类别中进行了修改)
..
到目前为止,使用gdb + qemu,我可以跨入Linux内核源代码。是否可以同时调试用户空间程序?例如,单步执行从用户空间到内核空间的程序,以便通过发布 info registers ?$ b $来观察qemu监视器上的寄存器更改我通过使用gdb命令添加符号文件来添加用户空间程序的调试信息来实现它。但是你必须知道这些程序加载地址。准确地说,您必须像平常一样通过将gdb连接到gdbserver来启
..
我想阅读并理解Linux内核的内存管理(特别是defrag \compaction \ migration)。 因此,我关闭了优化大小在 .config (使用make menuconfig当然)并编译...这使我仍然有一个优化的内核。 注意:当我说优化内核时,我的意思是当我使用 gdb 并告诉它 next code>它会跳过。我不想这样做,我希望能够像一个简单的hello世界一样,逐
..
我试图用kvm vm调试Linux内核。我收到一条错误消息“Remote'g'数据包回复过长”。我的主机是64位,所以是我的vm。 我的步骤: 启动gdb 执行“set architecture i386:x86-64 :intel“ 执行”add-symbol-file linux-3.0 / vmlinux“ 执行”show arch“以验证它仍然是”i386: x86-64
..
我是内核开发新手,我想知道如何使用QEMU和gdb运行/调试Linux内核。我实际上阅读了罗伯特·洛夫的书,但不幸的是,它并没有帮助读者如何安装合适的工具来运行或调试内核......所以我所做的就是遵循本教程 http://opensourceforu.efytimes.com/2011/02/kernel-development-debugging-using-eclipse / 。我使用ecl
..
我是kali linux的新手,我试图找到解决方法。我设法安装了vmware workstation 12.1.1,但是当我尝试运行它时,出现此错误。 未找到gcc的兼容版本。未找到GNU C编译器(gcc)版本5.4.0 我安装了gcc 6.1.1并花了3天的时间尝试解决这个没有结果..任何帮助? 解决方案 最后我找到解决方案 。 将Kali升级到最新版即4.8.0-k
..
void get_cwd(char * buf) { char * result; current-> fs-> pwd; result = get_dentry_path(current-> fs-> pwd); memcpy(buf,result,strlen(result)+1); kfree(result); } 错误:解除指向不完整类
..
我正在学习本教程,以便为ARM编译Linux内核3.2并使用QEMU进行模拟: $ b https://balau82.wordpress.com/2012/03/31 / compile-linux-kernel-3-2-arm-and-emulate-with-qemu / 我遵循以下步骤: wget http://www.kernel.org/pub/linux/kernel/
..
我有一台内核A头文件的Linux机器。 我想用内核A的GCC编译一个C程序,而内核B正在运行。 我该怎么做?如何检查它是否有效? 解决方案 这是需要深入研究的其他信息。 Post 2.6版本,正如其他答复中提到的那样,Makefile负责处理大部分Linux内核模块编译步骤。然而,它的核心仍然是GCC,这就是它的作用:(你也可以在没有Makefile的情况下编译它) 以下GC
..
我想用gcc预处理器编写几乎相同的代码声明500次。让我们说出于演示的目的,我想使用宏 FOR_MACRO : #define FOR_MACRO(x)\ #for {1 ... x}中的i:\ const int arr_len _ ## x [i] = {i}; 并呼叫 FOR_MACRO(100)转换为: const int arr_len_1 [
..
我想知道是否有人设法使用gcc以外的编译器编译Linux内核。或者如果有人曾经尝试过?问题似乎很愚蠢或者是学术问题,但是当我想到以下答案时就产生了这个问题: C ++ int操作在mips体系结构上是原子性的吗? 似乎某些操作的原子性不仅取决于CPU架构,而且也在使用的编译器上。所以,我想知道在Linux世界中是否存在除gcc以外的其他编译器。 解决方案 Linux明确依赖一些 gcc扩展,
..
arm-eabi,gnueabi和gnueabi-hf交叉编译器有什么区别。 我觉得很难选择编译器。 是否有本地编译器for arm? 解决方案 我不完全确定: eabi代表将在裸机内核上运行的代码的编译。 gnueabi表示汇编代码为linux 对于gnueabi / gnueabi-hf部分,我找到了答案此处。 GCC-臂-Linux的gnueabi是armel
..
Linux的同步原语(自旋锁,互斥锁,RCU)使用内存屏障指令来强制内存访问指令得到重新排序。这个重新排序可以由CPU自己完成,也可以由编译器完成。 有人可以展示GCC生成代码的例子吗?我主要对x86感兴趣。我问这个问题的原因是要了解GCC如何决定什么指令可以重新排序。不同的x86 mirco架构(例如:sandy bridge vs ivy bridge)使用不同的缓存架构。因此,我想知道
..