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!
相关推荐

2026-06-23
现代 C++ 实战(10):Ranges 与函数式风格
传统 STL 算法要传 begin/end,中间步骤常要临时容器;C++20 Ranges 用「范围 + 视图管道」把数据处理写成 Unix 管道风格——filter | transform | take,且惰性求值,少分配、可读性高。 这一篇对应 demo:ref/cpp_demo/basics/ranges_demo/。 这是「现代 C++ 实战」系列的第 10 篇。建议先读 第 09 篇:C++20 格式化与编译期计算。 一、传统算法的局限12345678910std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};// 传统写法:多步 + 中间容器std::vector<int> evens;std::copy_if(nums.begin(), nums.end(), std::back_inserter(evens), [](int n) { return n % 2 == 0; });std::vector<in...

2026-06-24
现代 C++ 实战(11):Concepts 与模板进阶
模板很强大,但约束不足时编译错误像天书——SFINAE、enable_if 能解决问题,却难写难读。C++20 Concepts 把「类型必须满足什么」写进签名,错误从 100 行模板展开变成 3 行人话。 这一篇从 SFINAE 回顾到 Concepts 语法,并配合 type_traits 与 demo:ref/cpp_demo/basics/type_traits_demo/。 这是「现代 C++ 实战」系列的第 11 篇。建议先读 第 10 篇:Ranges。 一、模板的问题:约束写在哪?12345template<typename T>T add(T a, T b) { return a + b; }add(1, 2); // OKadd("hello", "world"); // 可能编译过,但语义不对(指针相加) 我们希望:在模板实例化前就拒绝不合法的类型,并给出清晰错误——而不是在深层实例化里爆炸。 历史上三条路线: 时代 手段 C++11 SFINA...

2017-07-13
simple grep command
1grep -ri "hello" .

2026-07-02
现代 C++ 实战(19):哈希表实现
第 18 篇 用 std::sort 做 O(log n) 查找前的准备;哈希表把查找压到平均 O(1)——键经哈希函数映射到桶,碰撞用链地址或开放寻址解决。理解这两条路,就摸清了 std::unordered_map 的底层地图。 demo:ref/cpp_demo/algorithms/hash_table/(链地址、线性探测、双重哈希 + 与标准库性能对比)。 这是「现代 C++ 实战」系列的第 19 篇。建议先读 第 18 篇:排序算法。 一、哈希表在干什么? 操作 平均时间 思路 插入 O(1) index = hash(key) % bucket_count 查找 O(1) 同 index,再比对 key 删除 O(1) 定位后删节点或标记槽位 碰撞(collision):不同 key 算出同一 index。解决策略分两大类: 12链地址法: bucket[i] → (k1,v1) → (k2,v2) → …开放寻址: table[i], table[i+1], … 在同一数组里探测下一个空位 二、哈希函数好哈希函数:确定性、均匀分...

2026-07-10
现代 C++ 实战(27):协程与 Actor 模型
第 26 篇 的两个练手项目收尾了数据结构;系列最后一篇进入现代 C++ 的两条并发进阶路线:C++20 协程让异步代码像同步一样写,Actor 模型让并发像发消息一样简单。 demo:ref/cpp_demo/projects/learning_guide/(coroutine/ + actor/)。 这是「现代 C++ 实战」系列的第 27 篇(收官)。建议先读 第 12 篇:多线程基础 和 第 14 篇:线程池。 一、协程基础:三个关键字C++20 协程用编译器魔法把异步逻辑写成顺序代码: 关键字 作用 示例 co_yield 产生一个值并挂起 Generator co_await 等待异步操作完成 Task co_return 协程返回 结束协程 123456789Generator<int> counter(int max) { for (int i = 1; i <= max; ++i) { co_yield i; // 产生值,挂起 }}for (...

2026-06-14
现代 C++ 实战(01):CMake 与现代构建
上一篇我们把环境跑通了。从这一篇开始,我们真正进入 C++ 工程的地基:CMake。本系列 39 个 demo 全部用 CMake 构建,其中 projects/fetch_content/ 是一个「集大成」示例——它用 FetchContent 自动拉取 gtest、json、fmt、spdlog 等 6 个第三方库,演示现代 C++ 项目最常见的依赖管理方式。 搞懂这篇,后面所有带外部库的 demo 你都不会慌。 这是「现代 C++ 实战」系列的第 1 篇。对应 demo:ref/cpp_demo/projects/fetch_content/。建议先读 第 00 篇:环境搭建与项目导览。 一、为什么需要 CMake?手写 Makefile 在小项目里够用,但现代 C++ 项目很快会遇到天花板: 痛点 Makefile 的局限 CMake 的做法 跨平台 Windows / macOS / Linux 语法不同 一套 CMakeLists.txt,生成对应平台的构建文件 依赖管理 手动下载、编译、写 -I / -L Fet...





