Debug with LLDB
发表于|更新于|Programming
|浏览量:
First, compile codes with DSYM:
1 | g++ -g test.cpp -o test |
then, launch with LLDB Debugger:
1 | lldb test |
print codes:
1 | list(l) numbers |
set breakpoint:
1 | breakpoint set --file test.cpp --line 13 |
enable breakpoint:
1 | breakpoint enable 1 |
run program:
1 | run |
debug step-in:
1 | n |
continue to end:
1 | c |
文章作者: WALL-E-2000
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 WALL-E's Blog!
相关推荐
2020-04-08
VIM survival manuals
Cmd Meaning I insert mode; Esc command mode; o append mode; :shell temp enter shell; Ctrl+z temp enter shell(v2); fg return back to vim; shift + > insert tab; /word search word; n search next; b,w jump word; gg, G jump start, end; 10g go to 10 line; Ctrl + d,u page down, up; v visual mode; y yank(copy); dd cut; p paste; :vsp vertical split tab; :sp horizontal slpit tab; Ctrl + w change focus window; Ctrl + n nerd tree :q! quick not save;...

2026-06-21
现代 C++ 实战(08):错误处理策略
C++ 没有统一的「错误处理方式」——return -1、throw、std::optional、std::expected 各有战场。选错方式要么性能吃亏,要么错误被静默忽略,要么 API 语义含糊。 这一篇用同一个「解析配置文件」场景,对比 四种主流错误处理策略,并给出选型指南。对应 demo:ref/cpp_demo/basics/error_handling_demo/。 这是「现代 C++ 实战」系列的第 8 篇。建议先读 第 07 篇:C++17 工具箱。 一、为什么错误处理值得单独讲?现代 C++ 项目里,错误处理往往比算法更影响可维护性: 调用方会不会忘记检查返回值? 失败时资源会不会泄漏(文件句柄、锁、内存)? API 语义是否清晰:「找不到」和「出错了」是一回事吗? demo 用解析 host=...、port=... 的配置文件贯穿全文——同一功能,四种写法。 二、C 风格错误码:return -1 + 输出参数12345678enum class CErrorCode { SUCCESS = 0, FILE_NOT_FOUND = -...

2026-06-26
现代 C++ 实战(13):C++20 同步原语
第 12 篇用 thread、mutex、condition_variable 搭好了并发地基。C++20 补上最后几块拼图:jthread 自动 join 与协作式取消、semaphore 限流、latch / barrier 多线程阶段同步——写法更短、语义更清晰。 这一篇对应 demo:ref/cpp_demo/concurrency/sync_primitives/。 这是「现代 C++ 实战」系列的第 13 篇。建议先读 第 12 篇:多线程基础。 一、C++20 补上了什么? 原语 解决的问题 std::jthread 忘记 join() 导致 terminate;需要优雅停止后台线程 std::counting_semaphore 限制同时访问资源的线程数(连接池、限流) std::latch 一次性「等所有人到齐」 std::barrier 可重复的多阶段同步点 std::stop_token 协作式取消(配合 jthread) 编译要求:GCC 10+、Clang 10+、MSVC 2019+,-std=c++20...

2026-06-15
现代 C++ 实战(02):C++ 版本演进一览
上一篇我们搞定了 CMake 构建。但在写代码之前,还有一个「地图」问题:C++ 到底演进了哪些版本?每个版本加了什么? 如果你还在用 C++98 的思维读 C++20 的代码,很容易觉得「语法怎么又变了」。 这一篇不深入任何单一特性,而是把 C++03 → C++26 的演进脉络梳理清楚,并带你跑一遍 version_features demo——后面 25 篇特性文章,都可以在这张地图上找到位置。 这是「现代 C++ 实战」系列的第 2 篇。对应 demo:ref/cpp_demo/basics/version_features/。建议先读 第 01 篇:CMake 与现代构建。 一、C++ 标准时间线C++ 不像 Python 那样每年一个大版本,而是 3~5 年发布一次国际标准(由 ISO 委员会制定)。对开发者来说,真正重要的是:编译器支持到了哪个 -std=。 标准 发布年份 __cplusplus 宏 常用编译 flag 定位 C++98 / C++03 1998 / 2003 199711L -std=c++03 经典 C+...

2025-05-19
CMake CPP
目录结构 12345CMakeLists.txt/src/include/lib/build 其中 CMakeLists.txt 内容如下: 123456789101112131415161718# CMake 最低版本号要求cmake_minimum_required (VERSION 2.8)# C++ 11 支持:qset(CMAKE_CXX_FLAGS "-std=c++11")# 项目信息project (my_demos)# 设置源码位置set(SRC ${PROJECT_SOURCE_DIR}/src/carrots.cpp)# 生成可执行文件的位置set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)# 指定生成目标add_executable(${PROJECT_NAME} ${SRC}) cd 到 build 目录下,生成 Makefile: 1cd build && cmake .. &...

2026-07-08
现代 C++ 实战(25):SQLite 数据库实战
第 24 篇 的 HTTP 服务把数据存在内存里,重启即失;SQLite 把数据库装进一个文件——零配置、嵌入式、全球部署量最大的数据库引擎。本篇用 C++ RAII 封装 DatabaseManager,实现学校管理系统的完整 CRUD。 demo:ref/cpp_demo/database/sqlite3/。 这是「现代 C++ 实战」系列的第 25 篇。建议先读 第 24 篇:HTTP 服务与 JSON。 一、为什么选 SQLite? 特点 说明 零配置 无需安装数据库服务,打开文件即用 单文件 整个库在一个 .db 文件中,备份 = 复制文件 嵌入式 以库形式链接进进程,无网络开销 ACID 支持事务,数据一致性有保障 跨平台 iOS/Android/桌面/浏览器(WASM)均内置 12345应用进程 │ ├─ DatabaseManager (C++ 封装) │ └─ libsqlite3.so ──→ school.db (单文件) 适用场景:移动 App 本地存储、桌面工具、原型...





