Một số phương pháp Debug
Trong Visual C++ 6
Một desktop application thông thường
Breakpoint thông thường
Chuyển con trỏ tới dòng cần ngừng chương trình, và ấn F9
Advandce break point
Vào menu Edit => chọn mục Breakpoints
Hoặc ấn Alt-F9
Chi tiết trong advandce break point:
- Tab location: set break point tại một dòng code, click condition nếu muốn đặt điểu kiện cho break đó, ví dụ: i==10 (breakpoint trong vòng lặp, ngừng khi giá trị biến đếm i bằng 10)
- Tab data: đặt break point khi dữ liệu thay đổi tại vị trí cụ thể trong bộ nhớ, ví dụ: *(long*)0x123 (break point khi 4 byte tại vị trí 0x123 bị thay đổi giá trị.
- Tab messages: đặt break point khi có window message tới cửa sổ của ta(chọn winproc, và message).
Debug file .dll và file .cgi
Bạn đã bao giờ lập trình web cgi bằng C++, nếu có thì hẳn bạn sẽ biết là debug nó khó khăn như thế nào, đây là thủ thuật, hầu như là giống hệt như debug một file dll, tuy nhiên có 1 chút xíu khác (đôi khi).
Cách 1:
Giả sử cgi hoặc dll bạn cần đặt tại vị trí: C:\\location1\\a.dll
- Vào menu Project => setting => chọn tab debug => chỉnh mục executable to debug session: C:\\location1\\a.dll => chọn tab link => chọn category: general => chỉnh mục output file name: C:\\location1\\a.dll
- Đặt 1 break point bất kì (bằng cách ấn F9).
- Bạn nhớ là đang build mode debug không phải release.
- Bây giờ thì kích hoạt cho dll hoặc cgi đó lên ( chạy file exe - file exe có sử dụng dll đó, hoặc là gõ localhost vao trình duyệt Web IE,.. chỉ có bạn là biết chính xác cách kích hoạt nó như thế nào, túm lại là kích hoạt nó lên)
- 1 breakpoint se bật ra trong VC, lúc đó bạn đã điều khiển được luồng chạy của chương trình.
Cách 2:
- Chèn trong code tại chỗ nào bạn muốn ngừng 1 dòng lệnh sau
- Load dll, bằng cách kích hoạt chương trình chính như nêu ở cách 1
- Chờ đến khi nó bật ra 1 cái MessageBox, chưa vội ấn OK, đặt một cái breakpoint vào vị trị dưới dòng lệnh MessageBox hoặc __asm int 3, bây giờ mới click OK cái MessageBox đó.
- Bây giờ bạn đã điều khiển được luồng chạy của chương trình.
Một desktop application thông thường
Breakpoint thông thường
Chuyển con trỏ tới dòng cần ngừng chương trình, và ấn F9
Advandce break point
Vào menu Edit => chọn mục Breakpoints
Hoặc ấn Alt-F9
Chi tiết trong advandce break point:
- Tab location: set break point tại một dòng code, click condition nếu muốn đặt điểu kiện cho break đó, ví dụ: i==10 (breakpoint trong vòng lặp, ngừng khi giá trị biến đếm i bằng 10)
- Tab data: đặt break point khi dữ liệu thay đổi tại vị trí cụ thể trong bộ nhớ, ví dụ: *(long*)0x123 (break point khi 4 byte tại vị trí 0x123 bị thay đổi giá trị.
- Tab messages: đặt break point khi có window message tới cửa sổ của ta(chọn winproc, và message).
Debug file .dll và file .cgi
Bạn đã bao giờ lập trình web cgi bằng C++, nếu có thì hẳn bạn sẽ biết là debug nó khó khăn như thế nào, đây là thủ thuật, hầu như là giống hệt như debug một file dll, tuy nhiên có 1 chút xíu khác (đôi khi).
Cách 1:
Giả sử cgi hoặc dll bạn cần đặt tại vị trí: C:\\location1\\a.dll
- Vào menu Project => setting => chọn tab debug => chỉnh mục executable to debug session: C:\\location1\\a.dll => chọn tab link => chọn category: general => chỉnh mục output file name: C:\\location1\\a.dll
- Đặt 1 break point bất kì (bằng cách ấn F9).
- Bạn nhớ là đang build mode debug không phải release.
- Bây giờ thì kích hoạt cho dll hoặc cgi đó lên ( chạy file exe - file exe có sử dụng dll đó, hoặc là gõ localhost vao trình duyệt Web IE,.. chỉ có bạn là biết chính xác cách kích hoạt nó như thế nào, túm lại là kích hoạt nó lên)
- 1 breakpoint se bật ra trong VC, lúc đó bạn đã điều khiển được luồng chạy của chương trình.
Cách 2:
- Chèn trong code tại chỗ nào bạn muốn ngừng 1 dòng lệnh sau
- Mã: Chọn tất cả
__asm int 3; Hoặc MessageBox(...);
- Load dll, bằng cách kích hoạt chương trình chính như nêu ở cách 1
- Chờ đến khi nó bật ra 1 cái MessageBox, chưa vội ấn OK, đặt một cái breakpoint vào vị trị dưới dòng lệnh MessageBox hoặc __asm int 3, bây giờ mới click OK cái MessageBox đó.
- Bây giờ bạn đã điều khiển được luồng chạy của chương trình.
Nhận xét
Đăng nhận xét