Hướng Dẫn Debug Chương Trình Với GDB - Teknikal-Notes
Có thể bạn quan tâm
Pages
- A-home
- About Me
- Contact Info
- Disclaimer
- Other Links
hướng dẫn debug chương trình với GDB
GDB là một chương trình debug, gỡ rối chương trình rất phổ biến đối với công việc lập trình trong linux. Chúng ta sẽ đi tìm hiểu sơ lược về cách sử dụng chương trình. Giả sử ở đây, chúng ta có file main.c với nội dung như sau #incldueint main(){ int date= 22; int month= 12; int year = 2010; printf(“\n***********************************”); printf(“\n*** hello all ***”); printf(“\n*** chung ta se cung tim hieu ve GDB ***”); printf(“\n***********************************”); printf(“\n@copyright mathhoang ngay %d thang %d nam %d”,date,month,year”); return 1;}------------------------------------------sử dụng gcc để biên dịch chương trình thành file thực thi, chú ý là các bạn phải thêm option [-g] để cho phép chạy debug.Lệnh compile như sau:$ gcc -o -g main main.c ------------------------------------------sau khi compile xong, chúng ta sẽ được file thực thi main.Để bắt đầu debug file thự thi$ gdb [ten_file_thuc_thi]ví dụ;$gdb main------------------------------------------trong console của GDB, để thực thi các lệnh của linux(gdb) shell [lenh_linux]ví dụ:(gdb) shell clear(gdb) shell ls------------------------------------------để set break point ở một vị trí nào đó:(gdb) break [so_dong]hoặc(gdb) break [ten_ham]ví dụ:cần đặt breakpoint tại dòng thứ 10 trong main.c(gdb) break 10hoặc đặt breakpoint tại hàm main(gdb) break main------------------------------------------để xóa breakpoint(gdb) delete [so_thu_tu_break_point]ví dụxóa breakpoint thứ 2(gdb) delete 2------------------------------------------sau khi đã đặt breakpoint( hoặc ko cần đặt breakpoint tùy cách chúng ta debug), thì chúng ta bắt đầu chạy chương trình bằng lệnh sau(gdb) run------------------------------------------muốn xem chương trình đã dừng ở đâu(gdb) listở ví dụ của chúng ta chỉ có hàm main, do đó khi dùng lệnh list thì sẽ hiển thị duy nhất các dòng code của hàm main. Còn nếu chương trình đang chạy ở 1 function nào đó, ví dụ function aaaa thì sẽ list code của function đó.------------------------------------------chúng ta muốn chương trình chạy dòng lệnh kế tiếp thì trong gdb gõ(gdb) next [so_dong]nếu không có [so_dong ] thì dòng lệnh kế tiếp dòng lệnh hiện tại được thực thi, còn nếu có [so_dong] thì chương trình sẽ thực thi từ dòng lệnh hiện tại tới dòng lệnh [so_dong]------------------------------------------muốn chạy vào bên trong thân hàm(gdb) step------------------------------------------muốn quay lại đầu hàm thì dùng lệnh(gdb) return------------------------------------------muốn chương trình thực thi tiếp cho đến breakpoint kế hoặc đếnt hết chương trình(gdb) continue------------------------------------------trong quá trình chạy debug chúng ta muốn xem một biến có giá trị bằng bao nhiêu(gdb) display [ten_bien]ví dụ: trong hàm main của chúng ta có biến date, mà muốn xem biến này chúng ta thực hiện lệnh(gdb) display date------------------------------------------muốn in giá trị của 1 biến trong console(gdb) print [ten_bien]ví dụ(gdb) print date------------------------------------------muốn in địa chỉ của biến(gdb) print &[ten_bien]ví dụ(gdb) print &date------------------------------------------hiển thị kiểu dữ liệu của biến(gdb) ptype [ten_bien]hoặc(gdb) whatis [ten_bien]ví dụ(gdb) ptype date------------------------------------------gán giá trị cho 1 biến(gdb) set variable [ten_bien] = [value](gdb) continueví dụ:(gdb) set variable date = 15(gdb) continue------------------------------------------compile lại file thực thi(gdb) make--- name: nguyen minh hoang Y!M : [email protected] net name: mathhoang Nhãn: Tutorials8 comments:
sewerratMay 23, 2011 at 3:40 PMbài này hay đó bạn, dễ hiểu, các câu lệnh sắp sếp có thứ tự nên dễ hình dung được những gì mình làm.Cám ơn bạn!
ReplyDeleteReplies- Reply
AnonymousNovember 8, 2011 at 1:23 PMTuy khong co nhieu, nhung bai nay hay ban nhe.
ReplyDeleteReplies- Reply
hakiJuly 26, 2012 at 3:11 AMbài viết rất hay, cảm ơn bạn vì đã chia sẻ
ReplyDeleteReplies- Reply
AnonymousJuly 26, 2012 at 9:55 PMcho mình hỏi GDB có debug được file.pas không ?
ReplyDeleteReplies- Reply
AnonymousOctober 17, 2014 at 4:26 AMQuá hay, cảm ơn bạn nhiều
ReplyDeleteReplies- Reply
UnknownApril 24, 2015 at 1:31 AMkhi chương trình có tham số argv thì gdb truyền argv vào như thế nào. câu lệnh như thế nào ?
ReplyDeleteReplies
UnknownMay 10, 2015 at 1:47 PMVí dụ hàm main() đơn giản như sau:void main(int argc, char *argv[]){ // doing some thing}Có thể truyền tham số khi debug như sau: (giả sử main là chương trình sau khi đã compiled)-------------------------------------------------------------------------(gdb) set args "Hello, World" main(gdb) run
DeleteReplies- Reply
Reply
AnonymousJune 23, 2017 at 9:51 AMlàm sao dùng gdb để debug 1 project có nhiêu file vậy bạn
ReplyDeleteReplies- Reply
Topics
- .NET (3)
- .Tips (15)
- AndroidCoffee (2)
- CakePHP (10)
- Embedded Software Engineering (24)
- Gem5 (5)
- Hardware Programming Tutorials (11)
- Linux programming (18)
- MIPS VHDL (2)
- OOP (4)
- Software Engineering (17)
- Tea Programming (18)
- Toán học và Máy tính (20)
- Toán học và Âm nhạc (16)
- Train your brain (30)
- Tutorials (64)
- VHDL tutorials (11)
- ebook (34)
- network (12)
- python (5)
Archives
- ► 2018 (2)
- ► September (1)
- ► May (1)
- ► 2017 (6)
- ► November (2)
- ► February (2)
- ► January (2)
- ► 2016 (6)
- ► October (1)
- ► August (1)
- ► May (1)
- ► February (2)
- ► January (1)
- ► 2015 (22)
- ► October (3)
- ► September (3)
- ► June (1)
- ► May (8)
- ► February (1)
- ► January (6)
- ► 2014 (13)
- ► December (5)
- ► October (1)
- ► August (7)
- ► 2013 (2)
- ► March (1)
- ► January (1)
- ► 2012 (21)
- ► September (1)
- ► August (3)
- ► July (1)
- ► May (5)
- ► April (1)
- ► March (3)
- ► February (3)
- ► January (4)
- ► 2011 (81)
- ► December (4)
- ► November (8)
- ► October (7)
- ► September (15)
- ► August (13)
- ► July (3)
- ► June (10)
- ► May (9)
- ► April (4)
- ► March (1)
- ► February (4)
- ► January (3)
Links
- Cool Fourier Tools
- http://hahuykhoai.wordpress.com/
- http://ngobaochau.wordpress.com
- http://www.hieuhoc.com
- mathhoang.wordpress.com
- mathvn
Từ khóa » Debug Bằng Gdb
-
GDB Dòng Lệnh Cơ Bản (03 - Write To Read It Later
-
Bắt đầu: Hướng Dẫn Cho Người Mới Bắt đầu Cách Sử Dụng GDB
-
Debug #1 – GDB - B4050N
-
Cách Chạy Debug Bằng GDB Trên OS Ubuntu
-
Cách Dùng Gdb: Gỡ Lỗi Chương Trình C Hoặc C ++ Trên Linux - Onlyhow
-
10 Công Cụ Debugger Linux Tốt Nhất Dành Cho Các Kỹ Sư Phần Mềm
-
Những Lệnh Hay Dùng Của Gdb - Tài Liệu Text - 123doc
-
Làm Thế Nào để Debug 1 Chương Trình C? Tác Dụng Của Việc Debug ...
-
[Tutorial] Hướng Dẫn Debug Kernel Linux Bằng Vmware Và Gdb - CTF
-
Lab-2 DEBUG CHƯƠNG TRÌNH DÙNG TRÌNH GDB - Chuẩn đầu Ra
-
Top 14 Gdb Trong Linux Là Gì
-
[PDF] Bài 9 GỠ LỖI VÀ KIỂM THỬ - Soict
-
How To Debug Using GDB
-
GDB Online Debugger | Compiler - Code, Compile, Run, Debug ...
-
[Pentest] Hướng Dẫn Debug Code C/c++ Trên Android - Vietsunshine
-
GDB - Lazytrick - Limited Size Memory Of Mind
sewerrat
haki
Unknown