Visual Studio:内存泄露AddressSanitizer(跨平台) 2
概述 AddressSanitizer(ASan)最初由 Google 开发并开源,是 LLVM/Clang 编译器工具链的一部分 它的核心目标是检测内存错误(如缓冲区溢出、释放后使用等),并通过 影子内存(Shadow Memory) 和 运行时插桩(Instrumentati...
概述 AddressSanitizer(ASan)最初由 Google 开发并开源,是 LLVM/Clang 编译器工具链的一部分 它的核心目标是检测内存错误(如缓冲区溢出、释放后使用等),并通过 影子内存(Shadow Memory) 和 运行时插桩(Instrumentati...
问题 M2 Macbook开发,发现不识别#if defined(__aarch64__) 原因 编译dylib的时候,指定了编x86_64,然后被识别成intel的 解决方法一 通过在cmake里面判断架构结构,自定义对应宏,可解决这个问题 解决方法二 查资料,发现很多都是用的...
概述 Windows调试流程 Linux/GDB 的对应流程: 区别 Windows 把调试信息放在独立的 .pdb 文件里,需要你手动指定路径 Linux 把调试信息(DWARF)直接嵌入 .o / 可执行文件 / .so 中(编译时加 -g 选项),所以大部分情况下你不需要额...
Gcc 和 Clang __attribute__ ((__visibility__("hidden"))) 用于设置符号的可见性(visibility)属性 __visibility__("default") 默认可见性,符号在链接过程中...
二进制文件类型 概述 Windows 有好几种不同的二进制格式 PE/COFF 用于 .exe/.dll/.obj/.sys 独立的 .pdb 格式 独立的 .lib 格式 Linux 几乎全部统一为 ELF 格式 可执行文件、共享库、目标文件、内核模块、core dump 全都...
gcc/g++介绍 概述 gcc和g++都是GNU(组织)的一个编译器 区别 后缀为.c的文件gcc把它当做c程序,g++当做c++程序。 后缀为c++的两者都当做c++程序。 其他 对于cpp程序,无论gcc或者是g++编译阶段都是相同的 都是用的gcc进行编译 但是在链接阶段...
寄存器 问题 寄存器在写汇编的时候是随便用的吗 寄存器的使用有严格的规则和约定,违反这些规则会导致程序崩溃或出现难以调试的 bug 32位-常见调用约定对比 特性 GCC cdecl MSVC __cdecl MSVC __stdcall MSVC/GCC __fastcall ...
搜索当前标签