gdb调试工具的基本原理和使用

基础概念

GDB(GNU Debugger)是GNU项目下的一个强大的调试工具,用于调试各种程序,特别是那些用C、C++和其他编程语言(如go)编写的程序。

DB常用于以下几种场景:

  • 调试崩溃:当程序崩溃时,可以使用GDB来检查崩溃点,获取调用栈信息,找出导致崩溃的原因。这个时候就需要事先生成了一个coredump文件
  • 调试逻辑错误:通过设置断点和单步执行,可以逐步检查程序的逻辑,找出逻辑错误。
  • 性能调优:通过分析程序的执行路径和时间消耗,可以进行性能调优。

ELF: Linux可执行文件的格式,ELF中包含多个段,有一些是gdb调试所需要的,比如.debug_*,里面存了行号之类的

阅读更多

Enum Class Improvements for C++17, C++20 and C++23(C++17、C++20 和 C++23 的枚举类改进)

Enum Class Improvements for C++17, C++20 and C++23(C++17、C++20 和 C++23 的枚举类改进)

The evolution of the C++ language continues to bring powerful features that enhance code safety, readability, and maintainability. Among these improvements, we got changes and additions to enum class functionalities across C++17, C++20, and C++23. In this blog post, we’ll explore these advancements, focusing on initialization improvements in C++17, the introduction of the using enum keyword in C++20, and the std::to_underlying utility in C++23.

文章转载自: https://www.cppstories.com/2024/enum-improvements/

alt text

C++ 语言的演变继续带来强大的功能,可增强代码安全性、可读性和可维护性。在这些改进中,我们对 C++17、C++20 和 C++23 中的枚举类功能进行了更改和添加。在这篇博文中,我们将探讨这些改进,重点介绍 C++17 中的初始化改进、C++20 中 using enum 关键字的引入以及 C++23 中的 std::to_underlying 实用程序。

阅读更多

vscode C++ 扩展clangd介绍

概要

clangd是一个基于clang的C++语言服务器, 它提供了代码补全、跳转、重构等功能。它是一个独立的项目,不是clang的一部分。它的目标是提供一个快速、可靠的C++语言服务器,以便于IDE和其他开发工具使用。

项目主页: https://clangd.llvm.org/

安装

vscode扩展商店搜索clangd,安装即可。
注意启用后,需要将原有的微软的C/C++扩展进行取消

阅读更多