C Thực Chiến · Toolchain & Kiểm soát chất lượng
Từ mã nguồn đến phần mềm xuất xưởng được
Biên soạn bởi Nguyễn Anh Tuấn
Trở thành lập trình viên C đi làm được (chuẩn C17): build bằng Make/CMake, định dạng & phân tích tĩnh (clang-format/clang-tidy), bắt lỗi bộ nhớ với sanitizers, gỡ lỗi, kiểm thử & CI - để dự án của bạn sạch và xuất xưởng được, tự tin khoe khi phỏng vấn. Kèm bài lab chạy trên máy bạn.
9 bài ~208 phút Đã xuất bản Cập nhật 11/06/2026
Học xong mèo con làm được gì?
- Build dự án C bằng Make/CMake như khi đi làm, không còn gõ gcc thủ công từng tệp.
- Tự bắt lỗi bộ nhớ và undefined behavior bằng sanitizers trước khi phần mềm tới tay người dùng.
- Thiết lập định dạng mã, phân tích tĩnh và CI chạy tự động cho dự án của mèo con.
- Tự tin nói "dự án của tôi sạch và xuất xưởng được" trong buổi phỏng vấn.
Lộ trình học
- 1 Hành trình biên dịch Bốn giai đoạn biên dịch C (compile): tiền xử lý → dịch → hợp dịch → liên kết; cờ gcc -E/-S/-c và cách đọc lỗi undefined reference của linker. Nâng cao · 22′
- 2 Thư viện & liên kết Thư viện tĩnh (.a) vs thư viện động (.so) trong C: symbol, linker giải quyết ký hiệu, include guard - hiểu lỗi undefined reference & multiple definition. Nâng cao · 22′
- 3 Make & đồ thị build Học Make qua đồ thị phụ thuộc: viết Makefile với target, prerequisites, recipe; build tăng dần (incremental build) chỉ dịch lại thứ cần thiết. Nâng cao · 22′
- 4 CMake & Meson Học CMake (và Meson) cho dự án C: CMakeLists.txt, build out-of-source, PUBLIC/PRIVATE/INTERFACE, find_package - chuẩn build system khi đi làm. Nâng cao · 26′
- 5 Định dạng mã (clang-format) Định dạng mã C tự động với clang-format: viết file .clang-format, format-on-save trong editor, kiểm tra format trong CI - diff sạch, hết tranh cãi style. Nâng cao · 16′
- 6 Phân tích tĩnh (clang-tidy) Phân tích tĩnh (static analysis) cho C: cảnh báo -Wall -Wextra -Werror, clang-tidy với nhóm check bugprone/readability, cppcheck - bắt lỗi trước khi chạy. Nâng cao · 20′
- 7 Sanitizers: ASan, UBSan, TSan AddressSanitizer, UBSan, TSan: bắt lỗi bộ nhớ (use-after-free, tràn bộ đệm) và undefined behavior lúc chạy với -fsanitize; so sánh với valgrind. Nâng cao · 24′
- 8 Gỡ lỗi, kiểm thử & CI Gỡ lỗi C với gdb/lldb: breakpoint, đọc stack trace; viết unit test với assert/ctest (Unity/CMocka); dựng CI GitHub Actions chạy kiểm tra tự động. Nâng cao · 26′
- 9 Capstone: dự án xuất xưởng Áp trọn quy trình chất lượng lên một dự án thật: CMake + clang-format + clang-tidy + sanitizers + unit test + CI - tới khi cả 6 cổng đều xanh. Nâng cao · 30′
Sắp bắt tay vào dự án thật?
Tên miền, VPS, hosting để đưa sản phẩm lên mạng - chọn ở trang Ưu đãi. Mua qua link là góp thêm “cá” nuôi Mèo, bạn không tốn thêm.