ขณะนี้การทำงานสำหรับ Linux เท่านั้น DBGMEM ถูกปล่อยออกมาภายใต้เงื่อนไขของสัญญาอนุญาตสาธารณะทั่วไปของเลสเบี้ยน
เครื่องมือที่จะช่วยให้คุณพบปัญหาเช่น
& nbsp; 1 การรั่วไหลของหน่วยความจำ
& nbsp; 2 ความเสียหายของหน่วยความจำกอง
& nbsp; 3 ในทางที่ผิดอาร์กิวเมนต์ผิดกฎหมายที่จะทำงานห้องสมุดมาตรฐานที่เลือก
& nbsp; 4 ความเสียหายของสแต็ค
& nbsp; 5 ใช้หน่วยความจำกองอิสระหรือยกเลิกที่เริ่ม
& nbsp; 6 ช่วยให้คุณสามารถขยายเครื่องมือตรวจสอบข้อโต้แย้งเพิ่มเติมของ API
เครื่องมือแทนที่ฟังก์ชั่นการจัดสรรหน่วยความจำ glibc หน่วยความจำและฟังก์ชั่นการจัดการสตริงเพื่อเพิ่มคุณลักษณะของมัน
DBGMEM ไม่จำเป็นต้องมีการเปลี่ยนแปลงใด ๆ ในการเขียนโปรแกรมของคุณ แต่คุณอาจต้องการที่จะเปลี่ยนโปรแกรมของคุณเพื่อที่จะใช้คุณลักษณะขั้นสูงบาง
DBGMEM เป็นบั๊กมาเปิดหน่วยความจำสำหรับ C และ C ++ โปรแกรมและทำงานภายใต้ระบบปฏิบัติการลินุกซ์และถูกปล่อยออกมาภายใต้ลิขสิทธิ์ GNU Lesser ใบอนุญาตสาธารณะทั่วไป DBGMEM เพิ่มการตรวจสอบการแก้จุดบกพร่องของชิ้นส่วนของ glibc ห้องสมุดมาตรฐาน มันจะถูกนำมาใช้เป็นห้องสมุดสาธารณะที่มีการโหลดลงในพื้นที่ที่อยู่ของกระบวนการบั๊ก
เครื่องมือ
DBGMEM มีเครื่องมือการแก้จุดบกพร่องของหน่วยความจำหลายแต่ละสามารถโหลดเข้าโปรแกรมบั๊ก; เครื่องมือง่ายๆติดตามบล็อกจัดสรรหน่วยความจำทั้งหมดและเพิ่มข้อมูลการเก็บรักษาหนังสือเช่นสแต็คในขณะที่บล็อกที่ถูกจัดสรรลงไปในส่วนหัวของเวทีที่นำหน้าบล็อกจัดสรรหน่วยความจำ; มันยังเพิ่มคำยามก่อนและหลังการบล็อกการจัดสรร; เครื่องมือง่ายๆที่จะใช้ดีที่สุดสำหรับการตรวจสอบปัญหาการรั่วไหลของหน่วยความจำ เป็นส่วนหัวที่เกิดเหตุได้รับความเสียหายโดยโปรแกรมที่มีการดีบั๊ก การตรวจสอบเข้ามาเก็บข้อมูลหนังสือการรักษาทั้งหมดออกมาจาก stack ในแฟ้มแมปหน่วยความจำที่ไม่ระบุชื่อ; เครื่องมือนี้จะทำให้มีประสิทธิภาพมากขึ้นในการทนต่อหน่วยความจำการเขียนทับข้อบกพร่อง เครื่องมือการตรวจสอบนอกจากนี้ยังเพิ่มความสามารถในการได้อย่างรวดเร็วค้นหาข้อมูลในบล็อกกองใด ๆ สำหรับค่าตัวชี้ที่มีอยู่ภายในบล็อกกองที่มิ เครื่องมือการตรวจสอบเพิ่มการตรวจสอบของพารามิเตอร์สตริงร่วมกันและฟังก์ชั่นการจัดการหน่วยความจำและการตรวจสอบสำหรับสแต็คที่เป็นไปได้ดีที่สุดโดยฟังก์ชั่นเหล่านี้
โหมดของการดำเนินงาน
คุณสามารถเรียกใช้โปรแกรมส่วนใหญ่ที่มีการดีบักเป็น; เครื่องมือที่ไม่ต้องใช้โปรแกรมบั๊กที่จะเชื่อมโยงกับห้องสมุดที่เฉพาะเจาะจงใด ๆ เครื่องมือที่เป็นห้องสมุดที่ใช้ร่วมกันที่จะโหลดลงในพื้นที่ที่อยู่ของกระบวนการที่มีการตรวจสอบโดยวิธีการของเทคนิคการฉีด DLL คุณลักษณะ LD_PRELOAD ของลิงเกอร์แบบไดนามิกจะใช้ในการโหลดเครื่องมือที่ใช้ร่วมกันห้องสมุดก่อนห้องสมุดอื่น ๆ ที่มีการโหลด; การจัดสรรหน่วยความจำและฟังก์ชั่นการจัดการสตริงจะดักจับและเรียกว่าเป็นครั้งแรกจากห้องสมุดเครื่องมือ; นี้จะช่วยให้เครื่องมือในการเพิ่มการตรวจสอบของ ในระหว่างการทำงานของกระบวนการบั๊กดิบรายงานเป็นลายลักษณ์อักษรซึ่งจะดำเนินการต่อไปหลังจากการสิ้นสุดของกระบวนการบั๊ก; รายงานการเพิ่มฟังก์ชั่นเพิ่มชื่อสัญลักษณ์ร่องรอยสแต็คที่มีอยู่ในรายงานดิบ ดีบัก Gdb ถูกใช้เพื่อเปิดอยู่เป็นตัวเลขสัญลักษณ์เป็นที่อยู่ระหว่างการประมวลผลต่อไปของการรายงานดิบ
คุณสมบัติ .
- การรั่วไหลของหน่วยความจำ ; นี้นำไปใช้ทั้งเครื่องมือตรวจสอบและเครื่องมือที่เรียบง่าย เครื่องมือติดตามบล็อกกองแต่ละจัดสรรร่วมกับกองติดตามการดำเนินการในขณะที่บล็อกถูกจัดสรร; นอกจากนี้แท็กจำนวนเต็มจะถูกเก็บไว้กับการจัดสรรแต่ละค่านี้ติดตามเป็นระยะเวลาตรรกะ / `รุ่น 'ที่ characterizes เวลาที่บล็อกได้รับการจัดสรร รายงานของข้อมูลนี้ถูกผลิตขึ้นเสมอเมื่อออกจากกระบวนการหรือเมื่อมีการร้องขอโดยผู้ใช้ ข้อมูลนี้จะช่วยในการค้นหาอินสแตนซ์และสาเหตุของการรั่วไหลของหน่วยความจำ.
- การใช้หน่วยความจำกองไม่ได้เริ่มต้นหรือหน่วยความจำอิสระกอง; นี้นำไปใช้ทั้งเครื่องมือตรวจสอบและเครื่องมือที่เรียบง่าย เครื่องมือชุดหน่วยความจำทั้งหมดที่จัดสรรใหม่เพื่อให้มีค่า 0xDD ไบต์และหน่วยความจำอิสระกับค่าไบต์ 0xEE; การใช้ค่าเหล่านี้มักจะนำไปสู่การเขียนโปรแกรมข้อผิดพลาดหากพื้นที่หน่วยความจำนี้มีตัวชี้แล้วของ dereferencing ชี้กับ 0xDDDDDDDD ค่าจะนำไปสู่ความผิดพลาด.
- หน่วยความจำเสียหายกอง; นี้นำไปใช้ทั้งเครื่องมือตรวจสอบและเครื่องมือที่เรียบง่าย การตรวจสอบเครื่องมือสำหรับหน่วยความจำและเขียนทับจัดโดยการวางคำนำหน้าหน่วยความจำและต่อท้ายในบล็อกกองแต่ละ ถ้าค่าของปัจจัยที่มีการเปลี่ยนแปลงแล้วกองทับ / ประกันภัยมีการตรวจพบ.
- นี้ใช้กับ '' 'เครื่องมือการตรวจสอบ' '' เท่านั้น วัตถุประสงค์ของฟังก์ชั่นการจัดการสตริงของ glibc และสำเนาหน่วยความจำ / ฟังก์ชั่นการเคลื่อนไหวของ glibc; สแต็คการทุจริตโดยผู้ที่ฟังก์ชั่นการตรวจสอบเครื่องมือที่ได้รับผ่านครั้งแรกในการทำงานห้องสมุดมาตรฐานทั่วไปก็มีการตรวจสอบว่าการทำงานจะไม่เขียนทับบล็อกกองโต้แย้งที่มีอยู่ มันมีการตรวจสอบว่าสแต็คของด้ายโทรจะไม่ได้รับความเสียหาย.
มีอะไรใหม่ ในข่าวประชาสัมพันธ์นี้:
- ทำให้ในขณะนี้ได้รับตัวแปรสภาพแวดล้อม CFLAGS
- สร้างห้องสมุดที่มีตัวเลือก -ldl dbgmem
- ห้องสมุดสาธารณะที่วางอยู่ตอนนี้เป็น lib / $ (uname -r) ไดเรกทอรีเช่น glibc แต่งงานกับรุ่นเคอร์เนล.
- รวบรวมการแก้ไขในบางระบบ (ขั้นตอนที่กำหนด)
- เพิ่มตัวเลือกในการเรียกใช้สคริปต์ (-m - สร้างร่องรอยสแต็เฉพาะบางรุ่น)
มีอะไรใหม่ ในรุ่น 1.9.1:
- ให้สคริปต์ปรับปรุงตอนนี้พยายามที่จะตรวจสอบที่จำเป็น การตั้งค่าที่สร้างขึ้น; ยังไม่ได้ตอนนี้วิธีการทำ automake แม้ว่า
- รวบรวมข้อผิดพลาดในโหมด C สำหรับ gcc 2.9.6 ถาวร gcc ยังคงเกิดปัญหากับข้อผิดพลาดภายใน C ++ โหมดสร้างขึ้น
- เลือกเพิ่ม -g (ปิดการใช้งานการตรวจสอบสำหรับการจับคู่ของ malloc / ใหม่ / ใหม่ [] และฟรี / ลบ / ลบ [] ในโหมด C ++)
มีอะไรใหม่ ในรุ่น 1.7:
- เพิ่มตัวเลือก -F ตามส้อมและโทร exec (เหมือนใน ส้อม / exec)
- ตอนนี้พิมพ์ออกบรรทัดคำสั่งของกระบวนการบั๊กในส่วนหัวของไฟล์รายงาน.
- ชื่อไฟล์แผนที่ในขณะนี้มี pid.
- ลบไฟล์รายงานดิบโดยค่าเริ่มต้น มีจำนวนมากเกินไปของพวกเขา;
- การใช้งานทั้งหมดของ sprintf เปลี่ยนไป snprintf
ความคิดเห็นที่ไม่พบ