C++开发C++开发
👨🏿‍💻

C++开发

Last edited time
Jan 28, 2022 05:52 AM
Created
Jul 16, 2021 06:29 AM
Tags
c++
develop
vscode
💡
持续更新

入门流程(有编程基础)

  1. 学习最基本的语法:函数定义、头文件、类、命名空间、while for if 等逻辑操作.....
  1. 学习gcc,编译一个hello,带上动态库或者静态库的
  1. 学习make,编译一个hello
  1. 学习GDB
  1. 学习IDE
  1. 学习CMake
  1. 找个开源项目,上他
 
GUN工具链
工具
说明
GNU C 语言编译器。
GNU C++ 语言编译器。
GNU 链接器,将目标文件和库文件链接起来,创建可执行程序和动态链接库。
生成静态库 .a ,可以编辑和管理静态链接库。
生成器,可以根据 makefile 文件自动编译链接生成可执行程序或库文件。
调试器,用于调试可执行程序。
查看可执行文件依赖的共享库(扩展名 .so,也叫动态链接库)。
🌇ELF文件

GCC

  • 预处理: 预处理器将对源文件中的宏进行展开。
  • 编译: gcc 将 c 文件编译成 汇编文件。
  • 汇编: as 将汇编文件编译成机器码。
  • 链接: 将目标文件和外部符号进行连接, 得到一个可执行二进制文
 

MAKE

每个c文件都要对应一条gcc命令,通过编写makefile一键执行整个项目的gcc
makefile手册翻译

GDB调试

1. gdb 调试利器 - Linux Tools Quick Tutorial
GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c++程序员,gdb是必不可少的工具; 对C/C++程序的调试,需要在编译前就加上-g选项: $g++ -g hello.cpp -o hello 调试可执行文件: program也就是你的执行文件,一般在当前目录下。 调试core文件(core是程序非法执行后core dump后产生的文件): $gdb $gdb program core.11127 调试服务程序: 如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试他。program应该在PATH环境变量中搜索得到。 启动gdb后,进入到交互模式,通过以下命令完成对程序的调试;注意高频使用的命令一般都会有缩写,熟练使用这些缩写命令能提高调试的效率; run:简记为 r ,其作用是运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。 continue (简写c ):继续执行,到下一个断点处(或运行结束) next:(简写 n),单步跟踪程序,当遇到函数调用时,也不进入此函数体;此命令同 step 的主要区别是,step 遇到用户自定义的函数,将步进到函数中去运行,而 next 则直接调用函数,不会进入到函数体内。 step (简写s):单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的 until:当你厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体。 until+行号: 运行至某行,不仅仅用来跳出循环 finish: 运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息。 call 函数(参数):调用程序中可见的函数,并传递"参数",如:call gdb_test(55) quit:简记为 q ,退出gdb break n (简写b n):在第n行处设置断点 (可以带上代码路径和代码名称:
💡
只有在gcc编译的时候加了-g参数才能调试

VSCode调试运行C++

💡
Linux系统,安装好GNU开发套件

插件

  • c/c++
  • include autocomplete

配置

CMAKE

CMake文档翻译环境变量、参数🖖add_library
 

AddressSanitizer

 
内存检查工具
 

Effective C++

🩸Effective C++

杂项

🎖️搜索路径
 

iostream

iostream

Loading Comments...