กลับไปหน้าบทความ

อ่าน 3 นาที

ตัวตรวจสอบขอบเขต

ดีบักเกอร์/ซอฟต์แวร์การจัดการหน่วยความจำ/ไมโคร โฟกัส อินเตอร์เนชั่นแนล

BoundsCheckerเป็น เครื่องมือ ตรวจสอบหน่วยความจำและตรวจสอบความถูกต้องของการเรียก API ที่ใช้สำหรับการพัฒนาซอฟต์แวร์C++ ด้วย Microsoft Visual C++สร้างขึ้นโดยNuMegaในช่วงต้นทศวรรษ...

ตัวตรวจสอบขอบเขต

ตัวตรวจสอบขอบเขต
นักพัฒนาไมโครโฟกัส
เวอร์ชันเสถียร
12.1.40 / 5 มีนาคม 2021
ระบบปฏิบัติการวินโดวส์
พิมพ์โปรไฟล์เลอร์ / ดีบักหน่วยความจำ
ใบอนุญาตซอฟต์แวร์กรรมสิทธิ์
เว็บไซต์www.microfocus.com/products/devpartner/

BoundsCheckerเป็น เครื่องมือ ตรวจสอบหน่วยความจำและตรวจสอบความถูกต้องของการเรียก API ที่ใช้สำหรับการพัฒนาซอฟต์แวร์C++ ด้วย Microsoft Visual C++สร้างขึ้นโดยNuMegaในช่วงต้นทศวรรษ 1990 เมื่อ NuMega ถูกซื้อโดยCompuwareในปี 1997 BoundsChecker ก็กลายเป็นส่วนหนึ่งของชุดเครื่องมือที่ใหญ่กว่าคือDevPartner Studio Micro Focusซื้อสายผลิตภัณฑ์นี้จาก Compuware ในปี 2009 [ 1 ]เครื่องมือที่เทียบเคียงได้ ได้แก่Purify , Insure++และValgrind

BoundsChecker สามารถทำงานได้ในสองโหมดที่แตกต่างกัน: ActiveCheckซึ่งจะทำงานกับแอปพลิเคชันใดๆ ก็ตามตามที่เป็นอยู่ หรือFinalCheckซึ่งจะใช้การตรวจสอบที่เพิ่มเข้าไปในแอปพลิเคชันขณะที่กำลังสร้าง

ActiveCheck ทำการวิเคราะห์แบบไม่รบกวนระบบมากนัก และตรวจสอบการเรียกใช้ ทั้งหมด ของแอปพลิเคชันไปยังไลบรารี C Runtime , Windows APIและการเรียกใช้ไปยังอ็อบเจ็กต์ COMโดยการตรวจสอบการจัดสรรและการปล่อยหน่วยความจำทำให้สามารถตรวจจับการรั่วไหลและการโอเวอร์รันของหน่วยความจำได้ การตรวจสอบการเรียกใช้ API และ COM ช่วยให้ ActiveCheck สามารถตรวจสอบพารามิเตอร์ ค่าที่ส่งคืน และข้อยกเว้น และรายงานข้อยกเว้นเมื่อเกิดขึ้น นอกจากนี้ ยังสามารถตรวจจับ ภาวะการติด ตาย ของเธรด ได้โดยการตรวจสอบอ็อบเจ็กต์การซิงโครไนซ์และการเรียกใช้ ซึ่งให้การตรวจจับภาวะการติดตายทั้งที่เกิดขึ้นจริงและที่อาจ เกิดขึ้น

FinalCheck ต้องการการสร้างโปรแกรมที่มีเครื่องมือช่วยตรวจสอบ และให้การวิเคราะห์ที่ลึกซึ้งกว่าแต่ก็รุกล้ำความเป็นส่วนตัวมากกว่า โดยมีคุณสมบัติการตรวจจับทั้งหมดของ ActiveCheck บวกกับความสามารถในการตรวจจับบัฟเฟอร์โอเวอร์โฟลว์ (ทั้งการอ่านและการเขียน) และการเข้าถึงหน่วยความจำที่ไม่ได้เริ่มต้นใช้งาน มันตรวจสอบการเปลี่ยนแปลงขอบเขตทุกครั้ง และติดตามตัวชี้ที่อ้างอิงถึงวัตถุในหน่วยความจำ

ฟังก์ชันการทำงานทั่วไป

การตรวจจับการรั่วไหล

  • การติดตามหน่วยความจำ - การจัดสรรและการปล่อยหน่วยความจำจะถูกติดตามตลอดอายุการใช้งานของแอปพลิเคชัน และจะมีการสร้างรายงานเมื่อสิ้นสุดเซสชันเพื่อแสดงบล็อกหน่วยความจำที่จัดสรรโดยโค้ดของผู้ใช้ซึ่งยังคงถูกจัดสรรอยู่เมื่อกระบวนการทำงานสิ้นสุดลงตามปกติ เมื่อใช้การตรวจสอบโดยคอมไพเลอร์ การรั่วไหลของหน่วยความจำบางอย่างสามารถตรวจพบได้เร็วกว่า เมื่อตัวชี้ตัวสุดท้ายที่อ้างอิงถึงบล็อกหน่วยความจำที่จัดสรรไว้หมดขอบเขตหรือถูกเขียนทับด้วยค่าอื่น ด้วยกลไกเดียวกันนี้ การพยายามใช้ตัวชี้ไปยังหน่วยความจำที่ถูกปล่อยไปแล้วก็จะถูกรายงานด้วย
  • การติดตามวัตถุ COM - การสร้างและการทำลายวัตถุ COM จะถูกติดตามตลอดอายุการใช้งานของแอปพลิเคชัน และจะมีการสร้างรายงานเมื่อสิ้นสุดเซสชันซึ่งแสดงให้เห็นว่าวัตถุใดยังคงทำงานอยู่เมื่อกระบวนการทำงานสิ้นสุดลงตามปกติ
  • การติดตามทรัพยากร - ระบบจะตรวจสอบการสร้างและการทำลายแฮนเดิลของวัตถุระบบ (เช่น แฮนเดิลไฟล์ แฮนเดิล GDI และอื่นๆ) และจะสร้างรายงานเมื่อสิ้นสุดเซสชันเพื่อแสดงแฮนเดิลที่ยังคงอยู่เมื่อกระบวนการสิ้นสุดลงตามปกติ

การตรวจสอบความถูกต้องของการเรียกใช้ API

มีการตรวจสอบการเรียกใช้ API และยืนยันพารามิเตอร์อินพุตก่อนที่จะเรียกใช้ฟังก์ชันจริง โดยจะแจ้งเตือนหากพบปัญหา นอกจากนี้ยังมีการตรวจสอบรหัสส่งคืนของ API และบันทึกรหัสข้อผิดพลาด การตรวจสอบความถูกต้องนี้จำกัดเฉพาะ API ที่ BoundsChecker รู้จัก ซึ่งปัจจุบันมีอยู่หลายพันรายการ หากเปิดใช้งานการติดตามหน่วยความจำ การตรวจสอบความถูกต้องของการเรียกใช้ API สามารถใช้ข้อมูลที่รวบรวมได้เพื่อตรวจสอบความถูกต้องของตัวชี้หน่วยความจำได้อย่างแม่นยำยิ่งขึ้น

การตรวจจับหน่วยความจำล้น

เมื่อเปิดใช้งานทั้งการติดตามหน่วยความจำและการตรวจสอบความถูกต้องของ API จะทำให้สามารถตรวจจับสภาวะการโอเวอร์รันของอาร์เรย์และบัฟเฟอร์ได้หลายประเภท การตรวจสอบโดยคอมไพเลอร์ช่วยเพิ่มประสิทธิภาพนี้ นี่คือคุณสมบัติที่ทำให้ผลิตภัณฑ์นี้ได้รับการตั้งชื่อตั้งแต่แรก

การบันทึกการเรียกใช้ API

สามารถบันทึกรายละเอียดการเรียกใช้ API, เมธอด COM และฟังก์ชัน .NET Interop ได้อย่างละเอียด โดยจะบันทึกค่าพารามิเตอร์การเรียกใช้และค่าส่งคืนที่ได้ อย่างไรก็ตาม คุณสมบัตินี้มีข้อจำกัด เนื่องจากแอปพลิเคชันที่ไม่ซับซ้อนมักทำให้บันทึกการทำงานมีขนาดใหญ่เกินไปอย่างรวดเร็ว

การวิเคราะห์ .NET

สามารถสร้างรายงานวิเคราะห์การทำงานร่วมกันของ .NET, การเก็บขยะ และกิจกรรมของตัวจัดการหน่วยความจำขั้นสุดท้าย ตลอดอายุการใช้งานของกระบวนการที่กำลังทดสอบได้

การวิเคราะห์ภาวะชะงักงัน

การกอดรัดที่อันตรายถึงชีวิตบางประเภทและการล็อกตัวในลักษณะเดียวกันนั้นสามารถตรวจจับได้

ความเข้ากันได้

BoundsChecker เวอร์ชันปัจจุบัน (12.1.40) รองรับแอปพลิเคชันเนทีฟ 32 บิตและ 64 บิตบน Windows 10 (อัปเดตฤดูใบไม้ผลิปี 2020) สภาพแวดล้อม MS-DOS, Windows 16 บิต, Windows 2000 , Windows XP และWindows 7ไม่ได้รับการสนับสนุนอีกต่อไปผลิตภัณฑ์นี้ เป็นส่วนหนึ่งของ DevPartner Studio โดยผสานรวมกับอัปเดต ปี 2017 15.9.33 และ อัปเดต ปี 2019 16.9 [ 2 ]

ณ เดือนมีนาคม 2021 ฟีเจอร์การวิเคราะห์ภาวะติดตาย (Deadlock Analysis) ยังไม่รองรับในแอปพลิเคชัน X64

คำวิจารณ์

  • การออกใบอนุญาต - นับตั้งแต่การเข้าซื้อกิจการโดยMicro Focus Internationalชุดซอฟต์แวร์ดังกล่าวได้รับเสียงวิพากษ์วิจารณ์เนื่องจากกลไกการออกใบอนุญาตที่ยุ่งยากมากขึ้นซึ่งต้องจัดการเมื่อติดตั้งและใช้งาน ตัวอย่างเช่น รีวิวทุกรายการบนเว็บไซต์ร้านค้าออนไลน์ที่ขายผลิตภัณฑ์ (ยกเว้นรีวิวหนึ่งที่ส่งโดยนักพัฒนาซอฟต์แวร์) อธิบายว่าผลิตภัณฑ์ใช้งานไม่ได้จริงเนื่องจากวิธีการจัดการใบอนุญาต[ 3 ]
  • ความเร็ว - เครื่องมือนี้ค่อนข้างรบกวนการทำงาน และสามารถทำให้แอปพลิเคชันที่กำลังทดสอบช้าลงได้ตั้งแต่ 50 ถึง 300 เท่า ยิ่งมีการใช้งานฟีเจอร์หลายอย่างพร้อมกันมากเท่าไหร่ ก็ยิ่งช้าลงเท่านั้น โดยเฉพาะอย่างยิ่งเมื่อใช้การตรวจสอบการทำงานของคอมไพเลอร์
  • สกุลเงิน - แม้ว่าผลิตภัณฑ์จะใช้งานได้กับ Windows หลายเวอร์ชันและ Microsoft Visual Studio แต่ฐานข้อมูลการตรวจสอบความถูกต้องของ API นั้นไม่ได้มีการเพิ่มข้อมูลสำคัญใดๆ ตั้งแต่ปี 2006 และโดยทั่วไปแล้ว API รุ่นใหม่ๆ จะไม่ได้รับการตรวจสอบ
  • ความสามารถในการใช้งานร่วมกับระบบปฏิบัติการอื่น - รองรับเฉพาะ Microsoft Windows และ Microsoft Visual Studio เท่านั้น ไม่รองรับระบบปฏิบัติการหรือคอมไพเลอร์อื่นๆ
  • สัญญาณรบกวน - มีผลลัพธ์จำนวนมากที่รายงานออกมา ซึ่งถึงแม้จะถูกต้อง แต่ก็ไม่มีประโยชน์มากนัก ที่พบได้บ่อยที่สุดคือข้อผิดพลาดในการเรียกใช้ API การที่ API บางตัวล้มเหลวนั้นเป็นเรื่องปกติ และสามารถระงับผลลัพธ์ประเภทนี้ได้

ประวัติเวอร์ชัน

  • 12.0 - มีนาคม 2020 - เวอร์ชันใหม่ที่สร้างขึ้นสำหรับรันไทม์ Visual C/C++ ล่าสุดจาก Microsoft มีการเปลี่ยนแปลงภายในอื่นๆ อีกมากมาย[ 4 ​​]
  • 11.5.1 - กันยายน 2020 - ขณะนี้ใช้ตัวติดตั้ง WiX Toolset แล้ว
  • 11.4 HF5 - กุมภาพันธ์ 2020 - รองรับ Visual Studio 2019 16.4.5 เวอร์ชันสุดท้ายที่รองรับ Windows 7 หรือเวอร์ชันก่อนหน้า หรือ Visual Studio 2015 หรือเวอร์ชันก่อนหน้า
  • 11.4 HF4 - ตุลาคม 2019 - รองรับ Windows 10 2019 Fall Update และ Visual Studio 2019 16.3.6
  • 11.4 HF3 - พฤษภาคม 2019 - รองรับ Windows 10 2019 Spring Update และ Visual Studio 2019 16.0.3
  • 11.4 HF2 - ธันวาคม 2018 - รองรับ Windows 10 2018 Fall Update และ Visual Studio 2017 15.9.4
  • 11.4 - พฤศจิกายน 2017 - รองรับ Windows 10 2017 Fall Creator's Update
  • 11.3 HF5 - เมษายน 2560 - รองรับ Visual Studio 2017
  • 11.3 - กรกฎาคม 2558 - รองรับ Windows 10 และ Visual Studio 2015
  • 11.2 - มกราคม 2557 - รองรับ Windows 8.1, Windows 8.0 และ Visual Studio 2013
  • 11.1 - เมษายน 2556 - การแปลเป็นภาษาจีน (ไม่รวมความช่วยเหลือออนไลน์) แก้ไขข้อผิดพลาดต่างๆ
  • 11.0 - กันยายน 2012 - รองรับ Visual Studio 2012 อย่างเต็มรูปแบบ ปรับปรุงประสิทธิภาพและความแม่นยำ
  • 10.6 - เมษายน 2555 - รูปแบบการอนุญาตใช้งานใหม่ ตัวตรวจสอบการอัปเดตผลิตภัณฑ์ การสนับสนุนเบื้องต้นสำหรับ Visual Studio 2012 และเครื่องมือถาดระบบพร้อมตัวตรวจสอบกิจกรรม
  • 10.5 - กุมภาพันธ์ 2011 - รองรับแอปพลิเคชัน X64 บนWindows Vista X64 และเวอร์ชันที่ใหม่กว่า
  • 10.0 - เมษายน 2553 - รองรับ Visual Studio 2010
  • 9.1 - ตุลาคม 2552 - รองรับ Windows 7
  • 9.0 - กันยายน 2551 - รองรับ Visual Studio 2005 และ 2008
  • 8.2 - พฤษภาคม 2550 - เวอร์ชันสุดท้ายที่รองรับ Visual Studio 6.0 และ Visual Studio .NET 2003 อย่างเต็มรูปแบบ
  • 6.0 - ปี 1998 - เวอร์ชันแรกหลังจากที่ Compuware เข้าซื้อกิจการ NuMega
  • 5.0 - มีนาคม 2540
  • 4.0 - ปี 1996 - เปิดตัวฟีเจอร์การตรวจสอบความถูกต้องของ API
  • 2.0 สำหรับ DOS - มีนาคม 1991 [ 5 ]

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=BoundsChecker&oldid=1325124748 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ตัวตรวจสอบขอบเขต

BoundsCheckerเป็น เครื่องมือ ตรวจสอบหน่วยความจำและตรวจสอบความถูกต้องของการเรียก API ที่ใช้สำหรับการพัฒนาซอฟต์แวร์C++ ด้วย Microsoft Visual C++สร้างขึ้นโดยNuMegaในช่วงต้นทศวรรษ...

การตรวจจับการรั่วไหล

การติดตามหน่วยความจำ - การจัดสรรและการปล่อยหน่วยความจำจะถูกติดตามตลอดอายุการใช้งานของแอปพลิเคชัน และจะมีการสร้างรายงานเมื่อสิ้นสุดเซสชันเพื่อแสดงบล็อกหน่วยความจำที่จัดสรรโดยโค้ดของผู้ใช้ซึ่งยังคงถูกจัดสรรอยู่เมื่อกระบวนการทำงานสิ้นสุดลงตามปกติ...

การตรวจสอบความถูกต้องของการเรียกใช้ API

มีการตรวจสอบการเรียกใช้ API และยืนยันพารามิเตอร์อินพุตก่อนที่จะเรียกใช้ฟังก์ชันจริง โดยจะแจ้งเตือนหากพบปัญหา นอกจากนี้ยังมีการตรวจสอบรหัสส่งคืนของ API และบันทึกรหัสข้อผิดพลาด การตรวจสอบความถูกต้องนี้จำกัดเฉพาะ API ที่ BoundsChecker รู้จัก...

การตรวจจับหน่วยความจำล้น

เมื่อเปิดใช้งานทั้งการติดตามหน่วยความจำและการตรวจสอบความถูกต้องของ API จะทำให้สามารถตรวจจับสภาวะการโอเวอร์รันของอาร์เรย์และบัฟเฟอร์ได้หลายประเภท การตรวจสอบโดยคอมไพเลอร์ช่วยเพิ่มประสิทธิภาพนี้ นี่คือคุณสมบัติที่ทำให้ผลิตภัณฑ์นี้ได้รับการตั้งชื่อตั้งแต่แรก