Mở thư mục dự án
Chọn thư mục chứa mã nguồn và file build làm thư mục làm việc của chat, vì các công cụ file chỉ đọc và chỉnh sửa trong đó. Đặt ngăn xếp đã lưu và ghi chú vào đó, để toàn bộ trường hợp nằm ở một nơi và agent có thể đọc tất cả.
Phiên gỡ lỗi Windows từ xa gắn trình gỡ lỗi trên một máy vào chương trình trên máy khác qua mạng, và nó chỉ dành cho các máy lab do bạn sở hữu. Symbols là bước đầu tiên. Đặt tên một máy là host và máy kia là target. Biên dịch chương trình với debug symbols và giữ file PDB khớp với bản build đó, vì PDB không khớp sẽ cho tên hàm sai và ngăn xếp không symbols chỉ hiển thị địa chỉ. Cài đặt StatusRivet trên host, nơi bạn làm việc, và giữ target chỉ dành cho chương trình cần kiểm tra. Ghi lại mọi cài đặt bạn thay đổi trên cả hai máy để có thể khôi phục lại sau đó. Tái hiện lỗi với đầu vào nhỏ nhất có thể, vì trường hợp ngắn tạo ra ngăn xếp ngắn và dễ so sánh hơn. Kiểm tra xem host và target có thể kết nối với nhau trước khi yêu cầu agent thực hiện bất kỳ thao tác nào, vì kết nối thất bại thường bị nhầm là lỗi trình gỡ lỗi.
Chọn thư mục chứa mã nguồn và file build làm thư mục làm việc của chat, vì các công cụ file chỉ đọc và chỉnh sửa trong đó. Đặt ngăn xếp đã lưu và ghi chú vào đó, để toàn bộ trường hợp nằm ở một nơi và agent có thể đọc tất cả.
Ask first tạm dừng trước các hành động thay đổi dữ liệu, để bạn có thể đọc từng thao tác trước khi nó chạy. Sử dụng Plan only khi bạn muốn xem các bước trước và không chạy gì cả. Kế hoạch tồn tại sau khi khởi động lại, vì vậy bạn có thể quay lại nó sau này.
Đặt tên chương trình, máy host và máy target và triệu chứng, và nói rằng các máy là của bạn. Cung cấp chi tiết kết nối từ ghi chú lab của riêng bạn và không đoán bất kỳ chi tiết nào. Nói xem bản build nào đang chạy trên target và PDB nào thuộc về nó.
Đọc diff, biên dịch lại với lệnh build của bạn và chạy lại lệnh kiểm tra trên target. Giữ ghi chú về những gì đã thay đổi cùng với danh sách kiểm tra, và giữ dump cũ nếu bài kiểm tra mới vẫn thất bại, để lần thử tiếp theo bắt đầu từ bằng chứng chứ không phải từ trí nhớ.
attach your debugger to the targetattachedsave the dump on the targetsavedwrite the call stack to stack.txtsavedstack.txtread0xC0000005 stack.txt1 match# Debug session checklist
1. Build the app with debug symbols and keep the PDB
2. Note the build the crash happened on
3. Start the debugger on the host machine
4. Attach to the app running on the target
5. Reproduce the crash with the smallest input
6. Save a crash dump on the target
7. Save the faulting thread's call stack to stack.txt
8. Read the exception code and the top frames
9. Match the first frame to a source line
10. Propose a minimal fix and rebuild
11. Run the test again and note what changedDanh sách kiểm tra dạng văn bản thuần cho một phiên gỡ lỗi giữa hai máy lab. Nó bao gồm việc biên dịch với symbols, attach, tái hiện lỗi với đầu vào nhỏ nhất, lưu dump và ngăn xếp cuộc gọi, đọc các frame trên cùng, và kết thúc bằng một lần chạy kiểm tra sau khi sửa lỗi, với ghi chú về những gì đã thay đổi. Sao chép nó vào thư mục dự án của bạn và chỉnh sửa cho phù hợp với lab của riêng bạn. Sao chép và chỉnh sửa.
Nhiệm vụ: attach từ máy host vào chương trình của bạn đang chạy trên target lab. Attach trước. Mở thư mục dự án trong StatusRivet, chuyển sang Ask first và mô tả thiết lập. Shell chạy chế độ dòng lệnh của trình gỡ lỗi của bạn với chi tiết kết nối bạn cung cấp, và card hiển thị xem nó đã attach thành công qua mã thoát thực tế hay không. Agent không tự tạo cài đặt kết nối, vì vậy hãy lấy host, target và port từ ghi chú lab của riêng bạn. Gỡ lỗi từ xa chỉ dành cho các máy lab của riêng bạn, không bao giờ cho máy tính bạn không sở hữu. Đọc card trước bước tiếp theo. Nếu việc attach thất bại, không nên chạy gì khác, và bạn sửa kết nối trước, sau đó yêu cầu lại. Card cũng giữ lệnh chính xác, vì vậy bạn có thể lặp lại nó sau này.
Nhiệm vụ: sau khi bạn tái hiện lỗi trên target với đầu vào nhỏ nhất, hãy lưu bằng chứng. Lưu cả hai file. Shell yêu cầu trình gỡ lỗi của bạn ghi crash dump và lưu ngăn xếp cuộc gọi của luồng gây lỗi vào file văn bản, và các card hiển thị cả hai kết quả. Windows JIT debugger trên target sẽ tự động khởi động trình gỡ lỗi khi ứng dụng bị crash. Đó là một cài đặt hệ thống, vì vậy chỉ thay đổi nó trên máy thử nghiệm, ghi lại giá trị trước đó và khôi phục lại sau đó. Để tìm nguyên nhân gây crash hệ thống từ minidump, hãy bắt đầu từ ngăn xếp cuộc gọi đã lưu. Bạn phê duyệt từng bước ở chế độ Ask first, và bạn giữ cả hai file cùng với danh sách kiểm tra cho người đọc trường hợp tiếp theo. Đặt tên file theo bản build để không ai nhầm lẫn chúng.
Nhiệm vụ: kết nối frame trên cùng với mã của bạn. Bắt đầu với symbols. read_file mở stack.txt, grep tìm kiếm dự án cho tên hàm và mã ngoại lệ, chẳng hạn như 0xC0000005 cho access violation, và read_file mở file nguồn tại dòng đó. Với PDB khớp, ngăn xếp hiển thị tên hàm, file nguồn và số dòng, trong khi không có nó bạn chỉ thấy địa chỉ. Một máy đóng băng kết thúc bằng bsod với lỗi kernel security check failure là trường hợp cho đúng quy trình này: dump, stack, source. Đọc bằng chứng của riêng bạn trước khi agent chỉnh sửa bất kỳ thứ gì, vì agent làm việc từ văn bản và không thể step qua chương trình cho bạn. Để step, hãy sử dụng trình gỡ lỗi của riêng bạn và cho agent biết những gì bạn thấy.
Nhiệm vụ: biến phát hiện thành thay đổi. edit_file đề xuất một diff tối thiểu, ví dụ như thiếu null check hoặc index sai, và ở chế độ Ask first, agent tạm dừng để bạn có thể đọc các dòng đã thay đổi. Shell sau đó chạy lệnh build của bạn, với symbols, và lệnh kiểm tra của bạn, và các card báo cáo mã thoát thực tế. Lỗi bsod heap corruption chế độ kernel trong driver bạn viết có thể xuất hiện lâu sau khi write sai, vì vậy hãy kiểm tra các buffer được ghi trước đó trong stack, không chỉ frame cuối cùng. Lỗi bsdo exception lưu trữ không mong đợi trên target lab của bạn được xử lý theo cách tương tự. Chấp nhận diff chỉ sau khi kiểm tra thành công, và ghi lại những gì đã thay đổi. Test trước khi chấp nhận. Nếu test vẫn thất bại, hãy giữ stack mới và bắt đầu vòng lặp lại từ bước thứ hai.