Linux学习:编译相关
概述 编译阶段 编译阶段是整个编译流水线中最复杂、最核心的阶段——它是编译器的"大脑" 定义 编译阶段把预处理后的 C/C++ 源码(纯文本)翻译成汇编语言(或 LLVM IR) 这个阶段要完成"理解高级语言的含义,并用低级语言表达出来"这...
概述 编译阶段 编译阶段是整个编译流水线中最复杂、最核心的阶段——它是编译器的"大脑" 定义 编译阶段把预处理后的 C/C++ 源码(纯文本)翻译成汇编语言(或 LLVM IR) 这个阶段要完成"理解高级语言的含义,并用低级语言表达出来"这...
概述 预处理阶段的本质 对源码做文本级别的变换,把编译器不认识的预处理指令(#开头的东西)全部处理掉,输出一个纯粹的、编译器可以直接解析的 C/C++ 代码文件 宏替换是其中最核心的操作,但 #include 展开和条件编译同样重要——实际项目中,#include 展开带来的代码...
二进制文件类型 概述 Windows 有好几种不同的二进制格式 PE/COFF 用于 .exe/.dll/.obj/.sys 独立的 .pdb 格式 独立的 .lib 格式 Linux 几乎全部统一为 ELF 格式 可执行文件、共享库、目标文件、内核模块、core dump 全都...
概述 Windows调试流程 Linux/GDB 的对应流程: 区别 Windows 把调试信息放在独立的 .pdb 文件里,需要你手动指定路径 Linux 把调试信息(DWARF)直接嵌入 .o / 可执行文件 / .so 中(编译时加 -g 选项),所以大部分情况下你不需要额...
grep 基础的用法 常用的选项 组合使用 上下文显示 正则表达式 管道组合(grep 的精髓) tmux 三层结构 前缀键 所有快捷键都要先按一个"前缀键",默认是 Ctrl+b 比如"分屏"的操作是 Ctrl+b 然后松开,再按 % 会...
进程地址空间 概述 示例代码 图示 内核空间 内核空间是什么 内核空间是进程虚拟地址空间的高地址部分,在 64 位 Linux 上位于 0xFFFF800000000000 以上,占 128TB 它和用户空间的根本区别不是"地址高低",而是页表属性: 内核空间...
基础 NASM 开源、跨平台汇编器(支持 Windows、Linux、macOS) 特点 语法简洁严格(如内存访问必须用 [ ] 包裹) 无自动类型推断(需显式指定操作数大小,如 mov word [var], 1) 支持直接生成纯二进制文件(如引导扇区程序) 应用 操作系统开发...
基本语法 Shebang 注释 变量 变量名不能包含空格,等号两边也不能有空格 引用变量使用$符号 使用readonly命令将变量设置为只读 使用unset删除变量 字符串 单引号内的内容原样输出,变量不会被解析 双引号内的内容会解析变量和转义字符 获取字符串长度 字符串拼接 数...
关于sandbox相关 用途 进程隔离 CEF采多进程架构,主要包括浏览器进程和渲染进程 沙盒机制将渲染进程与浏览器进程隔离开来,使得即使渲染进程中存在恶意代码或漏洞,也不会直接影响浏览器进程及宿主系统 权限限制 沙盒限制渲染进程的权限,防止其访问和修改系统的敏感资源,如文件系统...
Windows 日志 可以通过现有日志来观察 当不方便附加进程时,可以通过写文件的方法写日志 Visual Studio 附加到进程 CLion 附加到进程 windbg Linux 日志 应用程序日志 var/log/ 当不方便附加进程时,可以通过写文件的方法写日志 gdb l...
搜索当前标签