(LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

61 6 0
(LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN QUANG ĐẠI KỸ THUẬT PHÂN TÍCH CHƢƠNG TRÌNH TĨNH CHO BÀI TỐN PHÂN TÍCH HÌNH DẠNG BỘ NHỚ HEAP LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội – 2015 TIEU LUAN MOI download : skknchat@gmail.com ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN QUANG ĐẠI KỸ THUẬT PHÂN TÍCH CHƢƠNG TRÌNH TĨNH CHO BÀI TỐN PHÂN TÍCH HÌNH DẠNG BỘ NHỚ HEAP Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số: 60480103 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƢỜI HƢỚNG DẪN KHOA HỌC: TS Nguyễn Trƣờng Thắng Hà Nội - 2015 TIEU LUAN MOI download : skknchat@gmail.com LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu tơi có giúp đỡ Thầy giáo hƣớng dẫn đồng nghiệp quan Các nội dung kết nghiên cứu luận văn hoàn toàn trung thực Trong luận văn, tơi có tham khảo đến số tài liệu số tác giả đƣợc liệt kê mục tài liệu tham khảo Hà Nội, 03 tháng 07 năm 2015 Học viên Nguyễn Quang Đại TIEU LUAN MOI download : skknchat@gmail.com LỜI CẢM ƠN Tôi xin chân thành cảm ơn thầy cô giáo Khoa Công nghệ Thông tin, Trƣờng Đại học Công nghệ – Đại học Quốc gia Hà Nội tận tình giảng dạy trang bị cho kiến thức, giúp hồn thành luận văn Tơi xin đƣợc bày tỏ lịng kính trọng lời cảm ơn sâu sắc tới TS Nguyễn Trƣờng Thắng, Phó Viện trƣởng, Viện Cơng nghệ Thông Tin – Viện Hàn lâm Khoa học Công nghệ Việt Nam Thầy động viên hƣớng dẫn tơi hồn thành luận văn tốt nghiệp Mặc dù cố gắng để hoàn thành luận văn, nhƣng phạm vi khả cho phép tránh khỏi thiếu sót, mong nhận đƣợc cảm thơng tận tình bảo thầy Hà Nội, 03 tháng 07 năm 2015 Học viên Nguyễn Quang Đại TIEU LUAN MOI download : skknchat@gmail.com MỤC LỤC MỤC LỤC DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT DANH SÁCH HÌNH VẼ MỞ ĐẦU CHƢƠNG GIỚI THIỆU CHUNG 1.1 Đặt vấn đề 1.2 Giới thiệu phân tích chƣơng trình tĩnh 1.3 Điểm mạnh điểm yếu phân tích chƣơng trình tĩnh 1.4 Các kỹ thuật phân tích chƣơng trình tĩnh CHƢƠNG LÝ THUYẾT NỀN TẢNG 11 2.1 Nền tảng phân tích ngữ nghĩa chƣơng trình 11 2.1.1 Lý thuyết giàn 11 2.1.2 Thuộc tính đóng 13 2.1.3 Phƣơng trình bất phƣơng trình 15 2.1.4 Lý thuyết điểm cố định 16 2.1.5 Các kỹ thuật tăng tốc độ hội tụ widening/narrowing 18 2.2 Kết luận chƣơng 22 CHƢƠNG PHÂN TÍCH HÌNH DẠNG HEAP 23 3.1 Phân tích trỏ 23 3.1.1 Thuật toán Andersen 23 3.1.2 Thuật toán Steensgaard 25 3.2 Phân tích trỏ liên thủ tục 26 3.3 Phân tích hình dạng nhớ heap 27 3.2.1 Kỹ thuật phân tích 29 3.2.2 Đánh giá 33 3.3 Kết luận chƣơng 33 CHƢƠNG THỰC NGHIỆM 34 TIEU LUAN MOI download : skknchat@gmail.com 4.1 Tổng quan Valgrind 34 4.1.1 Công cụ Memcheck 35 4.1.2 Biên dịch chƣơng trình với Memcheck 37 4.1.3 Lệnh kiểm tra Memcheck 37 4.2 Phân tích heap chƣơng trình Valgrind 39 4.2.1 Rò rỉ nhớ 39 4.2.2 Sử dụng nhớ không đƣợc khởi tạo 40 4.2.3 Lỗi sử dụng không malloc/ new/ new[] với free/ delete/ delete[] 43 4.2.4 Thực nghiệm chƣơng trình có mã nguồn lớn 45 KẾT LUẬN 47 TÀI LIỆU THAM KHẢO 48 PHỤ LỤC A 49 PHỤ LỤC B 51 PHỤ LỤC C 55 TIEU LUAN MOI download : skknchat@gmail.com DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT Ký hiệu Thuật ngữ CFG Control Flow Graph CG Garbage Collection DFG Data Flow Graph SMT Satisfiability Modulo Theories SAT Satisfiability Testing TIEU LUAN MOI download : skknchat@gmail.com DANH SÁCH HÌNH VẼ Hình 2.1 Biểu đồ Hasse biểu diễn giàn 11 Hình 2.2 Quan hệ thứ tự phần giàn 12 Hình 2.3 Quan hệ thứ tự phần giàn 12 Hình 2.4 Ví dụ giàn có chiều cao 13 Hình 2.5 Phép toán cộng giàn 14 Hình 2.6 Phép tốn nâng (lift) giàn 14 Hình 2.7 Phép tốn lift tập tạo thành giàn 14 Hình 2.8 Tính toán điểm cố định giàn 17 Hình 2.9 Giàn có chiều cao vơ hạn 19 Hình 3.1 Quan hệ tƣơng đƣơng ràng buộc 26 Hình 3.2 Đồ thị heap 30 Hình 3.3 Đồ thị hình dạng heap sau vòng lặp 32 Hình 4.1 Kết ví dụ rị rỉ nhớ Memcheck 40 Hình 4.2 Kết ví dụ sử dụng nhớ chƣa đƣợc khởi tạo Memcheck sử dụng –track-origins 42 Hình 4.3 Kết ví dụ sử dụng nhớ chƣa đƣợc khởi tạo Memcheck không sử dụng –track-origins 43 Hình 4.4 Kết ví dụ lỗi sử dụng không malloc/new/new[] với free/delete/delete[] 44 TIEU LUAN MOI download : skknchat@gmail.com MỞ ĐẦU Ngày với phát triển vƣợt bậc công nghệ thơng tin, phần mềm có vai trị cốt lõi ngày chiếm vị trí quan trọng khơng cơng nghệ thơng tin mà cịn đời sống kinh tế xã hội Vấn đề chất lƣợng phần mềm (software quality) chắn mối quan tâm thách thức xã hội đại ngày phụ thuộc vào dịch vụ máy tính đem lại Liên quan tới đảm bảo chất lƣợng phần mềm, khía cạnh quản lý nhớ đƣợc quan tâm Quản lý nhớ đƣợc chia làm hai giai đoạn phân bổ nhớ theo yêu cầu, giải phóng chƣơng trình khơng cịn sử dụng Hiện nay, nhiều hệ thống ngơn ngữ lập trình sử dụng chế quản lý nhớ tự động, tiêu biểu nhƣ Java C# Trong Java, ngƣời lập trình khơng cần phải trọng đến phân bổ giải phóng nhớ Khi khối nhớ đƣợc phân bổ khơng cịn đƣợc sử dụng máy ảo Java (Java Virtual Machine) tự giải phóng nhớ thơng qua chế thu dọn rác tự động (Automatic Garbage Collection) [1] Thu gom rác tự động trình kiểm tra nhớ heap, xác định đối tƣợng đƣợc sử dụng khơng đƣợc sử dụng, xóa đối tƣợng không đƣợc sử dụng Chức GC (Garbage Collection) gồm hai bƣớc trừu tƣợng (trong thực tế hai pha đan xen nhau):  Phát rác (tìm đối tƣợng từ đống rác cách đó)  Cải tạo rác (Cải tạo lại ô nhớ đối tƣợng rác, chƣơng trình chạy sử dụng ô nhớ này) Tuy nhiên, số ngôn ngữ lập trình truyền thống, đƣợc sử dụng phổ biến thực tế nhƣ C, C++ vấn đề quản lý nhớ đƣợc đặt hồn tồn vào lập trình viên [6] Lập trình viên tự động cấp phát nhớ, nhƣng khối khơng cịn cần thiết, họ cần phải trả lại cho hệ thống lời gọi hàm hệ thống nhƣ free() Hậu ngƣời lập trình qn hồn trả vùng cấp phát cho nhớ lại tiếp tục dùng lệnh cấp phát, lúc nhiều phần nhớ bị chiếm chỗ Điều dẫn tới lỗi liên quan tới nhớ, đặc biệt khối nhớ khởi tạo tự động trỏ hay mắc lỗi rò rỉ nhớ (memory leak) Quản lý nhớ quan trọng có nhiều khía cạnh nghiên cứu Các kỹ thuật thu dọn rác hƣớng tiếp cận vấn đề Mục tiêu luận văn tìm hiểu kỹ thuật phân tích chƣơng trình tĩnh, cập nhật xu hƣớng nghiên cứu nƣớc lĩnh vực phân tích chƣơng trình tĩnh, cải tiến kỹ thuật Cụ thể, luận văn tập trung vào hƣớng tiếp cận tìm hiểu kỹ thuật phân tích hình dạng nhớ heap TIEU LUAN MOI download : skknchat@gmail.com chƣơng trình Kết kỹ thuật áp dụng khâu loại bỏ đối tƣợng rác Kỹ thuật dựa lý thuyết ngữ nghĩa chƣơng trình theo trỏ Lý thuyết giàn, ngữ nghĩa điểm cố định đƣợc sử dụng nhƣ tảng kỹ thuật Luận văn có cấu trúc nhƣ sau: Chƣơng giới thiệu tổng quan phân tích chƣơng trình tĩnh Trong chƣơng trình bày định nghĩa kỹ thuật phân tích chƣơng trình tĩnh, ứng dụng, điểm mạnh điểm yếu kỹ thuật Tiếp luận văn trình bày vài kỹ thuật phân tích chƣơng trình tĩnh phổ biến nay, tốn kỹ thuật mà luận văn thực tìm hiểu Chƣơng trình bày tảng ngữ nghĩa chƣơng trình Chƣơng trình bày kỹ thuật phân tích hình dạng nhớ heap Đƣa toán, cách giải đánh giá Chƣơng thực nghiệm với công cụ Valgrind Cuối phần kết luận tài liệu tham khảo TIEU LUAN MOI download : skknchat@gmail.com 43 Hình 4.3 Kết ví dụ sử dụng nhớ chưa khởi tạo Memcheck không sử dụng –track-origins 4.2.3 Lỗi sử dụng không malloc/ new/ new[] với free/ delete/ delete[] Ví dụ: Chương trình C ghi tệp mismath-mem.c { } TIEU LUAN MOI download : skknchat@gmail.com 44 Đoạn ví dụ ta nhận thấy biến trỏ đƣợc phân bổ lệnh malloc, nhƣng giải phóng nhớ trỏ lại dùng lệnh delete thay lệnh free Các bước phân tích Valgrind sau: Bƣớc 1: Applications -> accessories -> terminal Bƣớc 2: cd dẫn vào thƣ mục chạy valgrind: cd Desktop Bƣớc 3: Lệnh tạo môi trƣờng để kiểm tra tệp mismath-mem.c gcc mismath -mem.c -o mismath -mem -g –Wall Bƣớc 4: Lệnh kiểm tra sử dụng nhớ không đƣợc khởi tạo valgrind mismath –mem –tool=memcheck show-mismatched-frees=yes  Kết Memcheck sinh hình 4.4 cho ta thấy Hình 4.4 Kết ví dụ lỗi sử dụng khơng malloc/new/new[] với free/delete/delete[] TIEU LUAN MOI download : skknchat@gmail.com / 45  Thông báo sử dụng không phù hợp malloc delete 4.2.4 Thực nghiệm chương trình có mã nguồn lớn Sau thực nghiệm chạy Valgrind tập chƣơng trình có mã nguồn tƣơng đối lớn có nhiều lỗi nhớ nhƣ sử dụng biến trỏ sau giải phóng, sử dụng khối nhớ khối nhớ đƣợc cấp phát, giải phóng hai lần khối nhớ đƣợc cấp phát Các bước phân tích Valgrind sau: Bƣớc 1: Applications -> accessories -> terminal Bƣớc 2: cd dẫn vào thƣ mục chạy valgrind: cd Desktop Bƣớc 3: Lệnh tạo môi trƣờng để kiểm tra tệp large-test.c gcc large-test.c -o large-test -g Bƣớc 4: Lệnh kiểm tra sử dụng nhớ không đƣợc khởi tạo valgrind –tool=memcheck –track-origins=yes / large-test  Kết Memcheck sinh hình cho ta thấy Ta thấy hình cho lỗi sử dụng nhớ khối nhớ đƣợc cấp phát TIEU LUAN MOI download : skknchat@gmail.com 46 Hình cho ta thấy lỗi sử dụng khối nhớ giải phóng lỗi giải phóng lần khối nhớ Tất có lỗi nhớ Valgrind thống kê đƣợc Trên ví dụ thực nghiệm Valgrind chƣơng trình có số lƣợng mã nguồn lớn có nhiều lỗi nhớ gặp phải, sau sử dụng valgrind để test lỗi chƣơng trình ta thấy đƣợc kết cụ thể lỗi nhớ vị trí lỗi nhớ dong lệnh mà khơng phải chạy chƣơng trình TIEU LUAN MOI download : skknchat@gmail.com 47 KẾT LUẬN Nội dung đạt đƣợc Đề tài tiếp cận tìm hiểu lý thuyết phƣơng pháp hình thức, cụ thể áp dụng phƣơng pháp phân tích chƣơng trình tĩnh vào giải toán kinh điển liên quan đến trỏ, tiến hành khảo sát cập nhật đƣợc xu giới phƣơng pháp hình thức, lĩnh vực ứng dụng kỹ thuật phát triển kiểm soát chất lƣợng phần mềm Luận văn tập trung chủ yếu vào nghiên cứu bản, tác giả trọng nghiên cứu lý thuyết việc xác định tính chất heap từ mã nguồn chƣơng trình Cuối cùng, dựa lý thuyết tìm hiểu tiến hành áp dụng cho tốn phân tích hình dạng heap chƣơng trình thực nghiệm công cụ Valgrind Hạn chế Hiện việc áp dụng lý thuyết vào thực tế cịn nhiều khó khăn, công cụ hỗ trợ hầu hết dừng mức thử nghiệm cho nghiên cứu Hƣớng phát triển Thực áp dụng, cải tiến lý thuyết để tăng khả ứng dụng Sử dụng cơng cụ mã nguồn mở có sẵn làm tảng để thực việc cải tiến đƣa vào ứng dụng thực tế TIEU LUAN MOI download : skknchat@gmail.com 48 TÀI LIỆU THAM KHẢO [1] Buytaert D, Venstermans K, Eeckhout L, BosschereK D, Garbage Collection Hints ELIS Department, Ghent University – HiPEAC Member, St.-Pietersnieuwstraat 41, B-9000 Gent, Belgium [2] Cousot P (2001), Abstract interpretation based formal methods and futurechallenges, Lecture Notes in Computer Science 2000, (138–170) [3] Cousot P Abstract Interpretation Web page maintained by P Cousot, 2008 [4] Cousot P Constructive Design of a Hierarchy of Semantics of a Transition System by Abstract Interpretation In Electronic Notes in Theoretical Computer Science, Volume 6, 1997 [5] Clarke E.M, Grumberg O, Peled D.A (1999), Model Checking The MIT Press [6] Jon Rafkind, Adam Wick, John Regehr, Matthew Flatt Precise Garbage Collection for C [7] Julian Seward, Nicholas Nethercote Using Valgrind to detect undefined value errors with bit-precision [8] Nielson F., Nielson H.R., Hankin C (2004), Principles of Program Analysis, Springer [9] Rice H.G (1953), Classes of recursively enumerable sets and their decisionproblems, Transactions of American Math Society 74, (358-366) [10] Schwartzbach M.I (2008), Lecture notes on static analysis Technical report, BRICS, Dept of Computer Science - University of Aarhus [11] Sagiv M, Reps T, and Wilhelm R Parametric shape analysis via 3-valued logic ACM Transactions on Programming Languages and Systems (TOPLAS), 24(3):217–298, 2002 [12] Thomas Reps, Mooly Sagiv, Reinhard Wilhelm, Static Program Analysis via 3-Valued Logic* [13] http://valgrind.org/ [14] Wogerer W (2005), A Survey of Static Program Analysis Techniques, Technische Universitat Wien TIEU LUAN MOI download : skknchat@gmail.com 49 PHỤ LỤC A Giải hệ phƣơng trình cho ví dụ thuật tốn Andersen Ta có hệ phƣơng trình: { ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ { ⟦ ⟧ } ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ } ⟦ ⟧ ⟦ ⟧ Hệ phƣơng trình tƣơng đƣơng với: { } ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ { } ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ Hệ phƣơng trình tƣơng đƣơng với: { } ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ { } ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ TIEU LUAN MOI download : skknchat@gmail.com 50 Hệ phƣơng trình tƣơng đƣơng với: { } ⟦ ⟧ { ⟦ ⟧ ⟦ ⟧ } ⟦ ⟧ Hệ phƣơng trình tƣơng đƣơng với: { { } } ⟦ ⟧ ⟦ ⟧ Kết ta thu là: ⟦ ⟧ { ⟦ ⟧ { } } TIEU LUAN MOI download : skknchat@gmail.com 51 PHỤ LỤC B Giải hệ phƣơng trình cho ví dụ tốn phân tích hình dạng nhớ heap Ta có hệ phƣơng trình ⟦ ⟧ { } ⟦ ⟧ { } ⟦ ⟧ { } ⟦ ⟧ { } ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ Hệ phƣơng trình tƣơng đƣơng với: ⟦ ⟧ ⟦ ⟧ ⟦ ⟧ { ⟦ } ⟧ ⟦ ⟧ ⟧ } ⟧ } ⟦ { { } ⟦ { ⟦ { { } { } ⟧ } { } ⟦ ⟧ ⟦ { ⟧ } { } TIEU LUAN MOI download : skknchat@gmail.com ⟦ 52 ⟧ { { ⟦ ⟧ } } ⟦ ⟧ { { ⟦ ⟧ } } ⟦ ⟧ ⟦ { { ⟧ } } ⟦ ⟧ ⟦ { { ⟧ } } ⟦ ⟧ ⟦ ⟧ { { } } ⟦ ⟧ ⟦ ⟧ { { } } TIEU LUAN MOI download : skknchat@gmail.com ⟦ 53 ⟧ ⟦ ⟧ { { } } Hệ phƣơng trình tƣơng đƣơng với: ⟦ ⟧ ⟦ ⟧ ⟦ ⟦ ⟧ ⟦ ⟦ ⟧ ⟧ ⟦ ⟧ { } { } { } ⟧ ⟦ { ⟧ } ⟦ ⟧ ⟦ { ⟧ } ⟦ ⟧ ⟦ { ⟧ } ⟦ ⟧ { } ⟦ ⟧ { } ⟦ ⟧ { } TIEU LUAN MOI download : skknchat@gmail.com ⟦ ⟧ 54 { } ⟦ ⟧ { } ⟦ ⟧ { } Kết thu là: { } TIEU LUAN MOI download : skknchat@gmail.com 55 PHỤ LỤC C Chƣơng trình C đƣợc ghi tệp large-test.c có nội dung nhƣ sau: { { } { } TIEU LUAN MOI download : skknchat@gmail.com 56 { } } { { { { } TIEU LUAN MOI download : skknchat@gmail.com 57 { } } { { } } { { } } } } TIEU LUAN MOI download : skknchat@gmail.com ... NGUYỄN QUANG ĐẠI KỸ THUẬT PHÂN TÍCH CHƢƠNG TRÌNH TĨNH CHO BÀI TỐN PHÂN TÍCH HÌNH DẠNG BỘ NHỚ HEAP Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số: 60480103 LUẬN VĂN THẠC SĨ CÔNG... kết hình dạng cuối heap TIEU LUAN MOI download : skknchat@gmail.com 29 3.2.1 Kỹ thuật phân tích Trong phân tích hình dạng nhớ heap, đồ thị hình dạng shape graph dùng để mơ tả hình dạng nhớ heap. .. Các kỹ thuật phân tích chƣơng trình tĩnh Những kỹ thuật phân tích chƣơng trình tĩnh thu hút nhiều nghiên cứu giới, có nhiều kỹ thuật nhƣng tựu chung phân theo nhóm nhƣ sau: Thứ nhất, kỹ thuật phân

Ngày đăng: 27/06/2022, 17:11

Hình ảnh liên quan

Hình 2.1. Biểu đồ Hasse biểu diễn giàn - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

Hình 2.1..

Biểu đồ Hasse biểu diễn giàn Xem tại trang 15 của tài liệu.
Hình 2.2. Quan hệ thứ tự từng phần là giàn - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

Hình 2.2..

Quan hệ thứ tự từng phần là giàn Xem tại trang 16 của tài liệu.
Hình 2.4. Ví dụ giàn có chiều cao là 4 - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

Hình 2.4..

Ví dụ giàn có chiều cao là 4 Xem tại trang 17 của tài liệu.
Hình 2.5. Phép toán cộng giàn - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

Hình 2.5..

Phép toán cộng giàn Xem tại trang 18 của tài liệu.
Hình 2.6. Phép toán nâng (lift) giàn. - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

Hình 2.6..

Phép toán nâng (lift) giàn Xem tại trang 18 của tài liệu.
Tƣơng ứng bao gồm các điểm. Giàn này sẽ nhƣ hình 2.9 sau: - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

ng.

ứng bao gồm các điểm. Giàn này sẽ nhƣ hình 2.9 sau: Xem tại trang 23 của tài liệu.
Hình 3.1. Quan hệ tương đương giữa các ràng buộc - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

Hình 3.1..

Quan hệ tương đương giữa các ràng buộc Xem tại trang 30 của tài liệu.
Hình 3.2. Đồ thị heap - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

Hình 3.2..

Đồ thị heap Xem tại trang 34 của tài liệu.
. Khi đó, hình dạng của heap sau khi đi qua nút sẽ là hợp của tất cả hình dạng heap tại các nút phía trƣớc , trừ đi định nghĩa của con trỏ     , hợp  với cạnh tham chiếu từ con trỏ   trỏ tới ô nhớ con trỏ    đang trỏ tới - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

hi.

đó, hình dạng của heap sau khi đi qua nút sẽ là hợp của tất cả hình dạng heap tại các nút phía trƣớc , trừ đi định nghĩa của con trỏ , hợp với cạnh tham chiếu từ con trỏ trỏ tới ô nhớ con trỏ đang trỏ tới Xem tại trang 34 của tài liệu.
Kết quả có thể mô tả nhƣ hình sau: - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

t.

quả có thể mô tả nhƣ hình sau: Xem tại trang 36 của tài liệu.
Hình 4.1. Kết quả ví dụ rò rỉ bộ nhớ trong Memcheck - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

Hình 4.1..

Kết quả ví dụ rò rỉ bộ nhớ trong Memcheck Xem tại trang 44 của tài liệu.
Hình 4.2. Kết quả ví dụ sử dụng bộ nhớ chưa được khởi tạo trong Memcheck sử dụng –track-origins - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

Hình 4.2..

Kết quả ví dụ sử dụng bộ nhớ chưa được khởi tạo trong Memcheck sử dụng –track-origins Xem tại trang 46 của tài liệu.
 Kết quả Memcheck sinh ra như hình 4.4 cho ta thấy - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

t.

quả Memcheck sinh ra như hình 4.4 cho ta thấy Xem tại trang 48 của tài liệu.
 Kết quả Memcheck sinh ra như hình cho ta thấy - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

t.

quả Memcheck sinh ra như hình cho ta thấy Xem tại trang 49 của tài liệu.
Hình trên cho ta thấy lỗi sử dụng khối bộ nhớ đã giải phóng và lỗi giải phóng 2 lần một khối bộ nhớ - (LUẬN văn THẠC sĩ) kỹ thuật phân tích chương trình tĩnh cho bài toán phân tích hình dạng bộ nhớ heap

Hình tr.

ên cho ta thấy lỗi sử dụng khối bộ nhớ đã giải phóng và lỗi giải phóng 2 lần một khối bộ nhớ Xem tại trang 50 của tài liệu.

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan