ไม่มีวิธีใดที่จะแน่ใจได้ว่าพฤติกรรมที่ไม่ได้กำหนดประเภทต่างๆ (โดยเฉพาะในสภาพการแข่งขัน) ไม่มีอยู่จริง
อย่างไรก็ตามมีเครื่องมือจำนวนหนึ่งที่แสดงสถานการณ์ดังกล่าวจำนวนมาก คุณอาจพิสูจน์ได้ว่ามีปัญหาเกิดขึ้นกับเครื่องมือดังกล่าวแม้ว่าคุณจะไม่สามารถพิสูจน์ได้ว่าการแก้ไขของคุณนั้นถูกต้อง
เครื่องมือที่น่าสนใจสำหรับวัตถุประสงค์นี้:
Valgrind เป็นเครื่องมือตรวจสอบหน่วยความจำ พบการรั่วไหลของหน่วยความจำอ่านหน่วยความจำที่ไม่ได้กำหนดค่าเริ่มต้นการใช้พอยน์เตอร์ห้อยต่องแต่งและการเข้าถึงนอกขอบเขต
Helgrind เป็นตัวตรวจสอบความปลอดภัยของเธรด พบสภาพการแข่งขัน
ทั้งทำงานโดยการใช้เครื่องมือแบบไดนามิกนั่นคือพวกเขาใช้โปรแกรมของคุณตามสภาพและดำเนินการในสภาพแวดล้อมเสมือนจริง สิ่งนี้ทำให้พวกเขาไม่ล่วงล้ำ แต่ช้า
UBSan เป็นเครื่องมือตรวจสอบพฤติกรรมที่ไม่ได้กำหนด พบกรณีต่าง ๆ ของพฤติกรรมที่ไม่ได้กำหนด C และ C ++ เช่นล้นจำนวนเต็มกะนอกช่วงและสิ่งที่คล้ายกัน
MSan เป็นตัวตรวจสอบหน่วยความจำ มันมีเป้าหมายคล้าย ๆ กับ Valgrind
TSan เป็นตัวตรวจสอบความปลอดภัยของเธรด มันมีเป้าหมายที่คล้ายกันเป็น Helgrind
ทั้งสามถูกสร้างขึ้นในคอมไพเลอร์เสียงดังกราวและสร้างรหัสในเวลารวบรวม ซึ่งหมายความว่าคุณต้องรวมพวกเขาเข้ากับกระบวนการสร้างของคุณ (โดยเฉพาะคุณต้องคอมไพล์ด้วย Clang) ซึ่งทำให้ยากต่อการตั้งค่าเริ่มต้นมากกว่า * ฝน แต่ในทางกลับกันพวกเขามีค่าใช้จ่ายรันไทม์ต่ำกว่ามาก
เครื่องมือทั้งหมดที่ฉันระบุไว้ทำงานบน Linux และบางส่วนใน MacOS ฉันไม่คิดว่าจะทำงานบน Windows ได้อย่างน่าเชื่อถือ