ดีบักเกอร์ระบบ การดีบักบริการ Windows ที่สะดวก ความหมายของการเขียนโปรแกรม ขั้นตอนของการสร้างโปรแกรม

ชุดเครื่องมือดีบัก Windows มีเครื่องมือดีบักขั้นสูงที่ให้คุณสำรวจภายในได้ อุปกรณ์วินโดวส์- อย่างมาก เวอร์ชันล่าสุดรวมชุดพัฒนาไว้เป็นส่วนหนึ่ง ซอฟต์แวร์ - ซอฟต์แวร์วินโดวส์ชุดพัฒนา (SDK)

เครื่องมือในชุดนี้สามารถใช้เพื่อดีบักกระบวนการทั้งโหมดผู้ใช้และโหมดเคอร์เนล

บันทึก.เครื่องมือแก้ไขข้อบกพร่อง สำหรับวินโดวส์ค่อนข้างอัปเดตและเผยแพร่บ่อยครั้งโดยไม่คำนึงถึงเวอร์ชันปฏิบัติการ ระบบวินโดวส์ดังนั้นโปรดกลับมาตรวจสอบเวอร์ชันใหม่ๆ บ่อยๆ

เครื่องมือแก้ไขจุดบกพร่องสามารถใช้เพื่อแนบโหมดผู้ใช้เข้ากับกระบวนการและเพื่อตรวจสอบและ/หรือเปลี่ยนสถานะหน่วยความจำของกระบวนการ เมื่อเชื่อมต่อกับกระบวนการ มีสองตัวเลือก:

  • รุกราน หากเมื่อเชื่อมต่อเข้ากับ กระบวนการทำงานไม่มีคำแนะนำพิเศษ ฟังก์ชัน Windows DebugActiveProcess ใช้เพื่อเชื่อมต่อดีบักเกอร์กับโค้ดที่กำลังดีบั๊ก สิ่งนี้จะสร้างเงื่อนไขสำหรับการตรวจสอบและ (หรือ) การเปลี่ยนแปลงหน่วยความจำกระบวนการ การตั้งค่าเบรกพอยต์ และการดำเนินการฟังก์ชันการดีบักอื่นๆ Windows อนุญาตให้คุณหยุดการดีบักโดยไม่ขัดจังหวะกระบวนการเป้าหมายหากดีบักเกอร์ถูกปิดโดยไม่ขัดจังหวะการทำงานของมัน
  • ไม่สร้างความรำคาญ (ไม่รุกล้ำ) ด้วยตัวเลือกนี้ ดีบักเกอร์เพียงเปิดกระบวนการโดยใช้ฟังก์ชัน OpenProcess กระบวนการนี้ไม่แนบกับกระบวนการอื่นเป็นดีบักเกอร์ สิ่งนี้ทำให้คุณสามารถตรวจสอบและ/หรือแก้ไขหน่วยความจำของกระบวนการเป้าหมายได้ แต่คุณไม่สามารถตั้งค่าได้ จุดควบคุม.

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

ในการดีบักเคอร์เนล คุณสามารถใช้ดีบักเกอร์สองตัว: ตัวหนึ่งที่ทำงานในหน้าต่างบรรทัดคำสั่ง (Kd.exe) และตัวหนึ่งที่มีอินเทอร์เฟซผู้ใช้แบบกราฟิก (GUI) (Windbg.exe) โปรแกรมดีบั๊กทั้งสองมีชุดคำสั่งเดียวกัน ดังนั้นตัวเลือกจึงขึ้นอยู่กับความชอบส่วนบุคคลทั้งหมด เครื่องมือเหล่านี้ช่วยให้คุณสามารถทำการดีบักเคอร์เนลได้สามประเภท:

  • เปิด ไฟล์ดัมพ์ขัดข้องสร้างขึ้นจากความล้มเหลวของระบบ
  • เชื่อมต่อกับระบบที่ทำงานอยู่และตรวจสอบสถานะของระบบ (หรือตั้งค่าเบรกพอยต์หากคุณกำลังแก้ไขรหัสไดรเวอร์อุปกรณ์) การดำเนินการนี้ต้องใช้คอมพิวเตอร์สองเครื่อง - เป้าหมายและคอมพิวเตอร์หลัก คอมพิวเตอร์เป้าหมายประกอบด้วยระบบที่กำลังดีบัก และคอมพิวเตอร์หลักประกอบด้วยระบบที่เรียกใช้ดีบักเกอร์ ระบบเป้าหมายสามารถเชื่อมต่อกับระบบหลักผ่านทาง สายเคเบิลโมเด็มว่าง, IEEE 1394 หรือสายเคเบิลพัฒนา สายยูเอสบี 2.0. ระบบเป้าหมายจะต้องบูตในโหมดดีบัก (โดยการกด F8 ระหว่างการบู๊ตและเลือกโหมดดีบัก หรือโดยการกำหนดค่าระบบให้เริ่มในโหมดดีบักโดยใช้ Bcdedit หรือ Msconfig.exe) คุณยังสามารถเชื่อมต่อผ่านไปป์ที่มีชื่อ ซึ่งใช้ในการดีบั๊กผ่านเครื่องเสมือน (สร้างโดยเครื่องมือ เช่น Hyper-V, Virtual PC หรือ VMWare) โดยการเปิดเผยระบบปฏิบัติการของแขกไปที่ พอร์ตอนุกรมเป็นอุปกรณ์ช่องสัญญาณที่มีชื่อ
  • ระบบ Windows ยังให้คุณเชื่อมต่อได้ ระบบท้องถิ่นและตรวจสอบสภาพของเธอ สิ่งนี้เรียกว่า "การดีบักเคอร์เนลในเครื่อง" หากต้องการเริ่มการดีบักเคอร์เนลในเครื่องโดยใช้ดีบักเกอร์ WinDbg ให้เปิดเมนู File เลือก Kernel Debug คลิกแท็บ Local จากนั้นคลิก OK ระบบเป้าหมายจะต้องบูตในโหมดแก้ไขข้อบกพร่อง ตัวอย่างของหน้าจอที่ปรากฏในกรณีนี้จะแสดงในรูป 1.6. คำสั่งเคอร์เนลดีบักเกอร์บางคำสั่งไม่ทำงานในโหมดดีบักเคอร์เนลในเครื่อง (เช่น คำสั่ง .dump ที่ออกแบบมาเพื่อสร้างดัมพ์หน่วยความจำ แม้ว่าดัมพ์ดังกล่าวจะสามารถสร้างได้โดยใช้เครื่องมือ LiveKd ที่กล่าวถึงด้านล่าง)

การดีบักเคอร์เนลในเครื่อง

เพื่อแสดงเนื้อหา โครงสร้างภายในข้อมูล รวมถึงข้อมูลเกี่ยวกับเธรด กระบวนการ แพ็กเก็ตคำขอ I/O และข้อมูลการจัดการหน่วยความจำ หลังจากเชื่อมต่อกับโหมดดีบักเคอร์เนล คุณสามารถใช้คำสั่งส่วนขยายดีบักเกอร์คำสั่งใดคำสั่งหนึ่งได้ (คำสั่งที่ขึ้นต้นด้วยอักขระ “!”)

ตัวช่วยที่ดีเยี่ยม วัสดุอ้างอิงสามารถใช้ไฟล์ Debugger.chm ที่อยู่ในโฟลเดอร์การติดตั้งของดีบักเกอร์ WinDbg ได้ มีเอกสารให้ทุกคน ฟังก์ชั่นและส่วนขยายดีบักเกอร์เคอร์เนล นอกจากนี้ คำสั่ง dt (ประเภทการแสดงผล) สามารถจัดรูปแบบโครงสร้างเคอร์เนลได้มากกว่า 1,000 โครงสร้าง เนื่องจากไฟล์สัญลักษณ์เคอร์เนล Windows มีข้อมูลประเภทที่ดีบักเกอร์สามารถใช้เพื่อจัดรูปแบบโครงสร้างได้

การทดลอง: การแสดงข้อมูลประเภทสำหรับโครงสร้างเคอร์เนล

หากต้องการแสดงรายการโครงสร้างเคอร์เนลที่มีข้อมูลประเภทรวมอยู่ในสัญลักษณ์เคอร์เนล ให้พิมพ์ dt nt!_* ในเคอร์เนลดีบักเกอร์ ผลลัพธ์ตัวอย่างบางส่วนมีลักษณะดังนี้:

lkd> ไม่ใช่!_*

nt!_IMAGE_NT_HEADERS

nt!_IMAGE_FILE_HEADER

nt!_IMAGE_OPTIONAL_HEADER

nt!_IMAGE_NT_HEADERS

nt!_LARGE_INTEGER

คุณยังสามารถใช้คำสั่ง dt เพื่อค้นหาโครงสร้างเฉพาะ โดยใช้ความสามารถ wildcard ของคำสั่ง ตัวอย่างเช่น หากคุณกำลังมองหาชื่อโครงสร้างของวัตถุขัดจังหวะ คุณต้องพิมพ์คำสั่ง dt nt!_*interrupt*:

lkd> dt nt!_*ขัดจังหวะ*

nt!_KINTERRUPT_MODE

nt!_KINTERRUPT_POLARITY

nt!_UNEXPECTED_INTERRUPT

จากนั้น ดังที่แสดงในตัวอย่างต่อไปนี้ สามารถใช้คำสั่ง dt เพื่อจัดรูปแบบโครงสร้างเฉพาะได้:

lkd> dt nt!_kinterrupt

ประเภท 0x000: Int2B

0x002 ขนาด: Int2B

0x018 ServiceRoutine: Ptr64 ถ่านที่ไม่ได้ลงนาม

0x020 MessageServiceRoutine: Ptr64 ถ่านที่ไม่ได้ลงนาม

0x028 ดัชนีข้อความ: Uint4B

0x030 ServiceContext: Ptr64 เป็นโมฆะ

0x038 สปินล็อก: Uint8B

0x040 จำนวนเห็บ: Uint4B

0x048 ล็อคจริง: Ptr64 Uint8B

0x050 ที่อยู่จัดส่ง: Ptr64 เป็นโมฆะ

0x058 เวกเตอร์: Uint4B

0x05c Irql: UChar

0x05d SynchronizeIrql: UChar

0x05e บันทึกแบบลอยตัว: UChar

0x05f เชื่อมต่อแล้ว: UChar

0x060 หมายเลข: Uint4B

0x064 ShareVector: UChar

0x065 แพด: ถ่าน

โหมด 0x068: _KINTERRUPT_MODE

0x06c ขั้ว: _KINTERRUPT_POLARITY

0x070 จำนวนบริการ: Uint4B

0x074 จำนวนการจัดส่ง: Uint4B

0x078 Rsvd1: Uint8B

0x080 เฟรมกับดัก: Ptr64_KTRAP_FRAME

0x088 สงวนไว้: Ptr64 เป็นโมฆะ

0x090 รหัสจัดส่ง: Uint4B

ควรสังเกตว่าเมื่อดำเนินการคำสั่ง dt โครงสร้างย่อย (โครงสร้างภายในโครงสร้าง) จะไม่แสดงตามค่าเริ่มต้น หากต้องการทำการเรียกซ้ำโครงสร้างย่อย คุณต้องใช้สวิตช์ –r ตัวอย่างเช่น ใช้คีย์นี้เพื่อแสดงอ็อบเจ็กต์การขัดจังหวะเคอร์เนล โดยแสดงรูปแบบของโครงสร้าง _LIST_ENTRY ที่จัดเก็บไว้ในฟิลด์ InterruptListEntry:

lkd> dt nt!_kinterrupt -r

ประเภท 0x000: Int2B

0x002 ขนาด: Int2B

0x008 รายการขัดจังหวะ: _LIST_ENTRY

0x000 กะพริบ: Ptr64 _LIST_ENTRY

0x008 กะพริบ: Ptr64 _LIST_ENTRY

0x000 กะพริบ: Ptr64 _LIST_ENTRY

0x008 กะพริบ: Ptr64 _LIST_ENTRY

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

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

  • เครื่องจำลองในวงจร
  • ดีบักเกอร์ซอฟต์แวร์ในตัว
  • ดีบักเกอร์ซอฟต์แวร์ภายนอก
  • อุปกรณ์กำลังดีบั๊กด้วยโปรแกรมที่บันทึกไว้ในหน่วยความจำ รหัสไบนารี่โปรแกรม

เครื่องจำลองในวงจรพร้อมจอแสดงผล ตัวแปรภาษาการเขียนโปรแกรมบนจอแสดงผลคอมพิวเตอร์ให้ความช่วยเหลือที่สำคัญในการดีบักโปรแกรมบนอุปกรณ์ที่กำลังพัฒนาโดยตรง วิธีการดีบักนี้ให้สภาพแวดล้อมที่สะดวกที่สุดเมื่อคุณสามารถหยุดโปรแกรมได้โดยตรงในอุปกรณ์ที่กำลังทำการดีบั๊ก ควบคุมการทำงานของโปรแกรมโดยตรงจากข้อความต้นฉบับของโปรแกรม สถานะของพอร์ตภายนอก และตัวแปรภายใน ทั้งสองรวมอยู่ในชิป และประกาศในระหว่างการเขียน ข้อความต้นฉบับโปรแกรม โปรดทราบว่าเมื่อทำการดีบักโปรแกรมโดยใช้โปรแกรมจำลองในวงจร คุณต้องรวมไว้ด้วย โมดูลวัตถุข้อมูลเชิงสัญลักษณ์ อุปกรณ์ที่จำเป็นสำหรับการดีบักโปรแกรมแสดงไว้ในรูปที่ 1


รูปที่ 1 ตัวอย่างระบบดีบักซอฟต์แวร์สำหรับไมโครคอนโทรลเลอร์

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

เมื่อใช้สภาพแวดล้อมการเขียนโปรแกรมแบบรวม จะมีให้ ส่วนต่อประสานที่ใช้งานง่ายช่วยให้คุณสามารถดีบักโปรแกรมที่กำลังพัฒนาได้อย่างง่ายดาย ปัจจุบันอินเทอร์เฟซที่คล้ายกับ Visual C เชลล์ได้กลายเป็นตัวอย่างมาตรฐานแล้ว รูปร่างเชลล์ซอฟต์แวร์ดังกล่าวแสดงในรูปที่ 2



รูปที่ 2 ตัวอย่างลักษณะที่ปรากฏของดีบักเกอร์ของระบบดีบักซอฟต์แวร์แบบรวม

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

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

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

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

เอกสารนี้ถูกเก็บถาวรและไม่มีการดูแลรักษาอีกต่อไป

WinPE: การดีบักแอปพลิเคชัน

หากต้องการดีบักแอปพลิเคชันและเคอร์เนลใน Windows PE คุณสามารถใช้ดีบักเกอร์ Windows เช่น Ntsd.exe, Cdb.exe, Windbg.exe และเครื่องมือสนับสนุน เครื่องมือแก้ไขจุดบกพร่องจะรวมอยู่ใน Windows 10 SDK หากต้องการให้เครื่องมือแก้ไขข้อบกพร่องพร้อมใช้งานบนคอมพิวเตอร์ที่ใช้ Windows PE คุณต้องคัดลอกเครื่องมือเหล่านั้นไปไว้ที่ ดิสก์ภายในเครื่องหรือแบ่งปัน

หากต้องการดีบัก Windows PE จากระยะไกล คุณอาจต้องปิดใช้งานไฟร์วอลล์ในตัวบนคอมพิวเตอร์ของคุณ:

wpeutil ปิดการใช้งานไฟร์วอลล์

การดีบักในโหมดผู้ใช้

ในการดำเนินการแก้ไขข้อบกพร่องในโหมดผู้ใช้ วิธีที่ง่ายที่สุดคือการเริ่มเซิร์ฟเวอร์ที่อยู่ระหว่างดำเนินการบนคอมพิวเตอร์ที่ใช้ Windows PE และเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้โปรแกรมดีบักเกอร์บนคอมพิวเตอร์เครื่องอื่น เซิร์ฟเวอร์กระบวนการรวมอยู่ในเครื่องมือดีบักใน Windows 10 SDK

ใช้งานเซิร์ฟเวอร์ในกระบวนการในโหมดผู้ใช้

    คัดลอกเครื่องมือเซิร์ฟเวอร์กระบวนการตรวจแก้จุดบกพร่องของ Windows dbgsrv.exeจากโฟลเดอร์เครื่องมือดีบัก Windows 10 SDK (เช่น ไฟล์ C \Windows Kits\10.0\Debuggers\x64 \Program (x86) ไปยังคอมพิวเตอร์ที่ใช้ Windows PE

    ใน บรรทัดคำสั่ง Windows PE ปิดการใช้งานไฟร์วอลล์

    wpeutil ปิดการใช้งานไฟร์วอลล์

    เริ่มเซิร์ฟเวอร์การดีบัก Windows ในกระบวนการ โดยระบุวิธีเชื่อมต่อกับคอมพิวเตอร์ เช่น พอร์ต TCP:

    dbgsrv.exe –t tcp: พอร์ต = 1234

    การเปิดใช้งานเซิร์ฟเวอร์กระบวนการ (ดีบักเกอร์ Windows)

    บน คอมพิวเตอร์ระยะไกลใช้เซิร์ฟเวอร์ในกระบวนการเพื่อเชื่อมต่อหรือเรียกใช้กระบวนการใน Windows PE บนคอมพิวเตอร์ปลายทาง:

    windbg -premote tcp:server=เซิร์ฟเวอร์ พอร์ต=1234

    สำหรับข้อมูลเพิ่มเติม โปรดดูที่การเปิดใช้งานไคลเอ็นต์อัจฉริยะ (Windows Debuggers)

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

ขั้นตอนนี้สามารถใช้ได้หากคุณต้องการข้าม startnet.cmd หรือ setup.exe และไปที่การแก้ไขจุดบกพร่องโดยตรงจากบรรทัดคำสั่ง การดำเนินการนี้จะกำจัดการเริ่มต้นโดยสิ้นเชิง รวมถึงการติดตั้ง และจะไม่ดำเนินการคำสั่ง เช่น Wpeinit.exe ขั้นตอนจะต้องดำเนินการออนไลน์บนระบบปฏิบัติการที่เชื่อมต่อ

เปิดใช้งานการดีบักโหมดผู้ใช้ก่อนการเริ่มต้น

    ลบไฟล์ winpeshl.ini หากมี หากไม่มีไฟล์ winpeshl.ini การดีบักโหมดผู้ใช้จะพร้อมใช้งานตามค่าเริ่มต้น

    ขณะโหลด ให้กดค้างไว้ ปุ่ม CTRLจนกระทั่งพรอมต์คำสั่งปรากฏขึ้น บรรทัดคำสั่งปรากฏขึ้นบนหน้าจอ

    เริ่มการดีบัก

การดีบักในโหมดเคอร์เนล

หากต้องการทำการดีบักโหมดเคอร์เนล จะต้องเปิดใช้งานก่อนที่ระบบจะบู๊ต แฟ้มการกำหนดค่าการบูตมีตัวเลือกการดีบักโหมดเคอร์เนลที่สามารถเปิดใช้งานได้โดยใช้เครื่องมือบรรทัดคำสั่ง bcdedit.exe เพื่อเปลี่ยนที่เก็บข้อมูลการกำหนดค่าการบูต การดีบักโหมดเคอร์เนลสามารถทำได้โดยใช้ bcdedit.exe เท่านั้น Bcdedit.exe ตั้งอยู่ ส่วนวินโดวส์ในไดเร็กทอรี \Windows\System32

ตัวเลือกดีบักเกอร์เริ่มต้นมีลักษณะดังนี้:

ตัวระบุ (dbgsettings) ประเภทการแก้ไขข้อบกพร่อง Serial debugport 1 baudrate 115200

ก่อนที่จะสร้างอิมเมจ ISO สำหรับ เครื่องเสมือนเปิดใช้งานเคอร์เนลด้วยรายการข้อมูลการกำหนดค่าการบูต

สำหรับข้อมูลเกี่ยวกับการเปลี่ยนแปลงที่เก็บข้อมูลการกำหนดค่าการบูตเริ่มต้น (default.bcd) โปรดดูวิธีเปลี่ยนที่เก็บข้อมูลการกำหนดค่าการบูตโดยใช้ Bcdedit

เปิดใช้งานการดีบักโหมดเคอร์เนล

    ค้นหาที่เก็บข้อมูลการกำหนดค่าการบูต ซึ่งอยู่ในไฟล์ชื่อ BCD- ไฟล์นี้อยู่ในไดเร็กทอรีสำหรับบูตที่รากของสื่อที่มีอิมเมจ Windows PE

    ที่พรอมต์คำสั่ง ให้ป้อนคำสั่ง bcdedit ต่อไปนี้เพื่อตั้งค่าสถานะการตรวจแก้จุดบกพร่องของที่เก็บข้อมูลการกำหนดค่าการบูตที่ใช้ในการบูตอิมเมจเพื่อตรวจแก้จุดบกพร่อง


บทนำ 2

ความหมายของการเขียนโปรแกรม ขั้นตอนการสร้างโปรแกรม 3

6. การดีบักโปรแกรม

ปัญหาที่ 2 และ 3 9

ปัญหาที่ 4 และ 5 12

บทสรุปที่ 14

รายชื่อวรรณกรรมที่ใช้แล้ว 15

การแนะนำ

อุปกรณ์คอมพิวเตอร์และเทคโนโลยีคอมพิวเตอร์ได้กลายเป็นที่ยึดที่มั่นในชีวิตมนุษย์ การพัฒนาความก้าวหน้าทางวิทยาศาสตร์และเทคโนโลยีเป็นไปไม่ได้หากไม่มีกระบวนการทางคอมพิวเตอร์อัตโนมัติ ความจำเป็นในการทำให้กระบวนการคำนวณเป็นไปโดยอัตโนมัติซึ่งกลายเป็นแรงผลักดันเบื้องต้นในการพัฒนาการเขียนโปรแกรม

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

ทุกวันนี้ เมื่อขอบเขตของแอปพลิเคชั่นคอมพิวเตอร์ขยายออกไปอย่างมหาศาล การพัฒนาและการทำงานของโปรแกรมก็ดำเนินไปตามกฎของแต่ละคน ดังนั้น นอกเหนือจากประสิทธิภาพแล้ว คุณลักษณะที่สำคัญอื่นๆ ของโปรแกรม เช่น ความเข้าใจ เอกสารที่ดี ความน่าเชื่อถือ ความยืดหยุ่น ความง่ายในการบำรุงรักษา ฯลฯ จึงเป็นสิ่งสำคัญอันดับแรก ปัญหาของการพัฒนาโปรแกรมที่มีคุณสมบัติดังกล่าวอธิบายได้จากความซับซ้อนของกระบวนการเขียนโปรแกรม

ในการสร้างโปรแกรมจำเป็นต้องปฏิบัติตามหลักการบางประการและเทคโนโลยีการเขียนโปรแกรมใหม่

ในปัจจุบันนี้ เนื่องจากความก้าวหน้าอย่างต่อเนื่องของเทคโนโลยีคอมพิวเตอร์ การเขียนโปรแกรมจึงมีบทบาท บทบาทที่สำคัญในชีวิตมนุษย์

ความหมายของการเขียนโปรแกรม ขั้นตอนของการสร้างโปรแกรม

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

การเขียนโปรแกรมเป็นกระบวนการสร้างโปรแกรมคอมพิวเตอร์หรือซอฟต์แวร์โดยใช้ภาษาโปรแกรม การเขียนโปรแกรมผสมผสานองค์ประกอบของวิทยาศาสตร์พื้นฐาน เช่น คณิตศาสตร์ คณิตศาสตร์ขั้นสูง และวิศวกรรมศาสตร์

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

ในกระบวนการสร้างโปรแกรมใด ๆ สามารถแยกแยะลำดับขั้นตอนต่อไปนี้ได้:

ขั้นที่ 1 คำชี้แจงของปัญหา: ในขั้นตอนนี้บุคคลที่มีความเข้าใจดีในหัวข้อของปัญหาจะเข้ามามีส่วนร่วม เขาจะต้องกำหนดเป้าหมายวัตถุประสงค์อย่างชัดเจนให้คำอธิบายด้วยวาจาเกี่ยวกับเนื้อหาของปัญหาและเสนอแนวทางทั่วไปในการแก้ปัญหามีการวิเคราะห์ลักษณะและสาระสำคัญของปริมาณทั้งหมดที่ใช้ในปัญหาและเงื่อนไขที่ได้รับการแก้ไข กล่าวอีกนัยหนึ่งคือ ในขั้นตอนนี้ เงื่อนไขของปัญหาจะเกิดขึ้น . ขั้นตอนนี้มีความสำคัญมากเนื่องจากความสำเร็จของการดำเนินการตามโปรแกรมที่สร้างขึ้นส่วนใหญ่ขึ้นอยู่กับความเข้าใจที่ถูกต้องในเป้าหมายและข้อกำหนด

ขั้นที่ 2 การวิเคราะห์ปัญหาและการสร้างแบบจำลอง: เป้าหมายของขั้นตอนนี้คือแบบจำลองทางคณิตศาสตร์หรือการกำหนดทางคณิตศาสตร์ ในขั้นตอนนี้ มีการดำเนินการตามประเด็นต่อไปนี้

1) กำหนดแหล่งข้อมูลและประเภทของข้อมูลเหล่านั้น

2) วิธีแก้ปัญหาอธิบายไว้ในรูปแบบของการพึ่งพาเชิงวิเคราะห์ (สมการ, ฟังก์ชัน)

3) ข้อมูลสุดท้ายและประเภทจะถูกกำหนด

ด้วยวิธีนี้ แบบจำลองทางคณิตศาสตร์จึงถูกสร้างขึ้นโดยมีความแม่นยำ ข้อสันนิษฐาน และข้อจำกัดบางประการ ในกรณีนี้ สามารถใช้ส่วนต่างๆ ของคณิตศาสตร์และสาขาวิชาอื่นๆ ได้ ทั้งนี้ขึ้นอยู่กับลักษณะเฉพาะของปัญหาที่กำลังแก้ไข

ด่าน 3 อัลกอริทึมของปัญหาและการวาดแผนภาพบล็อก: ดำเนินการบนพื้นฐานของคำอธิบายทางคณิตศาสตร์ของโปรแกรม บน ในขั้นตอนนี้อัลกอริธึมสำหรับการแก้ปัญหาจะถูกรวบรวมตามการกระทำที่ระบุโดยวิธีการแก้ปัญหาที่เลือก กระบวนการประมวลผลข้อมูลแบ่งออกเป็นบล็อกที่แยกจากกันและค่อนข้างเป็นอิสระ และมีการสร้างลำดับการดำเนินการของบล็อก กำลังพัฒนาบล็อกไดอะแกรมของอัลกอริทึม

ด่าน 4 การเขียนโปรแกรม: ในขั้นตอนนี้ อัลกอริธึมสำหรับการแก้ปัญหาจะถูกแปลเป็นภาษาโปรแกรมเฉพาะ ภาษาระดับสูงมักจะใช้สำหรับการเขียนโปรแกรม ดังนั้น โปรแกรมที่คอมไพล์แล้วจึงต้องแปลเป็นภาษาเครื่อง หลังจากการแปล โปรแกรมเครื่องจักรที่เกี่ยวข้องจะถูกดำเนินการ

ขั้นที่ 5 การดีบักและการทดสอบโปรแกรม: ประกอบด้วยการค้นหาและกำจัดข้อผิดพลาดทางวากยสัมพันธ์และตรรกะในโปรแกรม

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

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

การดีบักโปรแกรม

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

การดีบักเป็นกิจกรรมที่มุ่งตรวจจับและแก้ไขข้อผิดพลาดในโปรแกรม

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

การดีบัก = การทดสอบ + การค้นหาข้อผิดพลาด + การแก้ไข

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

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

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

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

ดีบักเกอร์ซอฟต์แวร์ในตัว ซึ่งเป็นส่วนหนึ่งของสภาพแวดล้อมการเขียนโปรแกรมแบบรวม ช่วยให้กระบวนการดีบักโปรแกรมง่ายขึ้นอย่างมาก แต่ในขณะเดียวกันก็ช้าลงอย่างมาก

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

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

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

  • ปาสคาล การดีบัก โปรแกรม

    บทคัดย่อ >> วิทยาการคอมพิวเตอร์

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

  • โปรแกรมเพื่อคำนวณค่าจ้างและภาษีสำหรับพนักงานบริษัท

    บทคัดย่อ >> เศรษฐศาสตร์

    ซอฟต์แวร์: การศึกษาคำชี้แจงปัญหา การเขียนโปรแกรมและ การดีบัก โปรแกรม- คำอธิบาย กรณีทดสอบ- พร้อมด้วย...เวลาคอมพิวเตอร์ ณ การดีบัก โปรแกรมกำหนดโดยการคูณเวลาจริง การดีบัก โปรแกรมสำหรับราคา...

  • การดำเนินการและ การดีบัก โปรแกรมในสภาพแวดล้อมบูรณาการ การเขียนโปรแกรมเทอร์โบ ปาสคาล (MS-Dos)

    งานห้องปฏิบัติการ >> วิทยาการคอมพิวเตอร์การเขียนโปรแกรม

    การใช้สภาพแวดล้อมแบบผสมผสานในทางปฏิบัติ การเขียนโปรแกรมเพื่อวัตถุประสงค์ในการสนองและ การดีบัก โปรแกรมในภาษาปาสคาล ทฤษฎี... ข้อมูล ส่วนประกอบพื้นฐานของระบบ การเขียนโปรแกรมเทอร์โบ...

  • 2. เครื่องมือแก้ไขข้อบกพร่องที่ใช้งานอยู่

    2.1. สถาปัตยกรรมของเครื่องมือแก้ไขข้อบกพร่องที่ใช้งานอยู่

    โดยทั่วไป cross-debugger ประกอบด้วย 2 โมดูลหลัก: ตัวจัดการบนแพลตฟอร์มเครื่องมือและเอเจนต์การดีบักที่ฝั่งเป้าหมาย ผู้จัดการทำหน้าที่ให้มั่นใจ ส่วนต่อประสานกับผู้ใช้คือการรับคำสั่ง ประมวลผล และส่งไปยังฝั่งเป้าหมาย ตลอดจนรับ ประมวลผล และออกข้อมูลจากตัวแทนที่ทำงานโดยตรงกับระบบที่กำลังดีบั๊ก ความสามารถของเอเจนต์การดีบักขึ้นอยู่กับคุณสมบัติของสถาปัตยกรรมระบบ กล่าวคือ:

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

    มีโอกาสใดบ้างในการสร้างตัวจัดการ (เพื่อควบคุมเหตุการณ์ที่เกิดขึ้น เอเจนต์อาจต้องมีตัวจัดการของตัวเอง)

    เจ้าหน้าที่อนุญาตให้ทำการเรียกใช้ฟังก์ชันใดได้บ้าง

    นอกจากนี้ เอเจนต์การดีบักต้องสนับสนุนความสามารถในการรับและส่งข้อมูลจากเอเจนต์เทียมที่สร้างไว้ในโค้ดของโปรแกรมที่กำลังดีบั๊ก เอเจนต์การดีบักสามารถประกอบด้วยหลายโมดูล ตัวอย่างเช่น โมดูลหนึ่งรวบรวมข้อมูล อีกโมดูลหนึ่งทำการกรอง และโมดูลที่สามส่งข้อมูลไปยังผู้จัดการ

    โครงสร้างทั่วไปของ cross-debugger ที่ใช้งานอยู่แสดงไว้ในรูปที่ 1 2.

    ข้าว. 2. ครอสดีบักเกอร์ที่ใช้งานอยู่

    มาดูโปรโตคอลผู้จัดการ-ตัวแทนโดยใช้ดีบักเกอร์ VxGDB (Wind River Systems, ระบบเป้าหมาย- วีเอ็กซ์เวิร์คส์) โปรโตคอลนี้อิงตาม RPC (การเรียกขั้นตอนระยะไกล) คำขอของผู้จัดการสามารถจัดประเภทได้ดังต่อไปนี้:

    ซึ่งรวมถึงการร้องขอให้โหลดโมดูล การร้องขอเพื่อรับข้อมูลเกี่ยวกับ ไฟล์บูตและการขอข้อมูลเกี่ยวกับสัญลักษณ์

    สิ่งเหล่านี้เป็นการร้องขอให้เริ่ม หยุด และลบงาน เพื่อแนบและแยกออก งานที่กำลังดำเนินอยู่เพื่อตั้งค่าและลบเบรกพอยต์ เพื่อดำเนินการงานที่หยุดไว้ต่อไป

    3. คำขอ Ptrace

    เอเจนต์การดีบักจำลองฟังก์ชัน ptrace และส่งคำร้องขอการอ่านและเขียนที่เหมาะสมไปยังฟังก์ชันดังกล่าว

    จากหนังสือ Debugging Real-Time Systems [ทบทวน] ผู้เขียน Kostyukhin K A

    2.1. สถาปัตยกรรมของเครื่องมือดีบักที่ใช้งานอยู่ โดยทั่วไป cross-debugger ประกอบด้วย 2 โมดูลหลัก: ตัวจัดการบนแพลตฟอร์มเครื่องมือและเอเจนต์การดีบักที่ฝั่งเป้าหมาย ผู้จัดการทำหน้าที่จัดหาส่วนต่อประสานกับผู้ใช้ซึ่งก็คือเพื่อรับคำสั่งของพวกเขา

    จากหนังสือวิทยาการคอมพิวเตอร์และ เทคโนโลยีสารสนเทศ: บันทึกการบรรยาย ผู้เขียน Tsvetkova A.V

    4. Debug register นี่ดีมาก กลุ่มที่น่าสนใจการลงทะเบียนที่มีไว้สำหรับการดีบักฮาร์ดแวร์ เครื่องมือแก้ไขข้อบกพร่องฮาร์ดแวร์ปรากฏตัวครั้งแรกในไมโครโปรเซสเซอร์ i486 ในฮาร์ดแวร์ ไมโครโปรเซสเซอร์มีรีจิสเตอร์ดีบักแปดตัว แต่ในความเป็นจริงเท่านั้น

    จากหนังสือวิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ ผู้เขียน Tsvetkova A.V

    46. ​​​​Debug Registers นี่คือกลุ่มการลงทะเบียนที่น่าสนใจมากซึ่งออกแบบมาเพื่อการดีบักฮาร์ดแวร์ เครื่องมือแก้ไขข้อบกพร่องฮาร์ดแวร์ปรากฏตัวครั้งแรกในไมโครโปรเซสเซอร์ i486 ในฮาร์ดแวร์ ไมโครโปรเซสเซอร์มีรีจิสเตอร์ดีบักแปดตัว แต่ในความเป็นจริงเท่านั้น

    จากหนังสือ Office 2007 หลักสูตรมัลติมีเดีย ผู้เขียน เมนอฟ โอเล็ก

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

    จากหนังสือ Windows Script Host สำหรับ Windows 2000/XP ผู้เขียน โปปอฟ อังเดร วลาดิมิโรวิช

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

    จากหนังสือการพัฒนาแอปพลิเคชันมา สภาพแวดล้อมลินุกซ์- ฉบับที่สอง ผู้เขียน จอห์นสัน ไมเคิล เค.

    บทที่ 7 เครื่องมือแก้ไขข้อบกพร่องหน่วยความจำ แม้ว่า C จะเป็นอย่างไม่ต้องสงสัย ภาษามาตรฐานการเขียนโปรแกรมใน ระบบลินุกซ์มีคุณสมบัติหลายประการที่ป้องกันไม่ให้โปรแกรมเมอร์เขียนโค้ดที่ไม่มีข้อผิดพลาดเล็กน้อยซึ่งจะมีในภายหลัง

    จากหนังสือ VBA สำหรับ Dummies โดย สตีฟ คัมมิงส์

    คีย์ผสมสำหรับการดีบักในตาราง ตาราง 9.1 แสดงรายการคีย์ผสมที่ใช้ในการดีบัก ฉันจะพิจารณาแต่ละข้ออย่างละเอียดในบทนี้ การรันโค้ดทีละบรรทัดโดยไม่มีการรันโค้ดทีละบรรทัด

    จากหนังสือการเขียนโปรแกรม PDA และสมาร์ทโฟนบน .NET Compact Framework ผู้เขียน คลิมอฟ อเล็กซานเดอร์ พี.

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

    จากหนังสือ Linux: คู่มือฉบับสมบูรณ์ ผู้เขียน โคลิสนิเชนโก เดนิส นิโคลาวิช

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

    จากหนังสือการเขียนโปรแกรม Linux พร้อมตัวอย่าง ผู้เขียน ร็อบบินส์ อาร์โนลด์

    15.2. การคอมไพล์สำหรับการดีบัก การใช้ดีบักเกอร์ซอร์สโค้ดดีบักเกอร์ ไฟล์ปฏิบัติการจะต้องคอมไพล์ด้วยตัวเลือกคอมไพเลอร์ -g ตัวเลือกนี้ทำให้คอมไพลเลอร์ฝังตัวระบุการดีบักเพิ่มเติมลงในโค้ดออบเจ็กต์ นั่นคือ

    จากหนังสือการเขียนโปรแกรมสำหรับ Linux แนวทางแบบมืออาชีพ โดย มิทเชลล์ มาร์ก

    15.4. การเขียนโปรแกรมสำหรับการดีบัก มีเทคนิคมากมายที่ช่วยให้การดีบักซอร์สโค้ดง่ายขึ้น ตั้งแต่ง่ายไปจนถึงซับซ้อน ในส่วนนี้เราจะดูจำนวนหนึ่ง

    จากหนังสือ UNIX: การพัฒนา แอปพลิเคชันเครือข่าย ผู้เขียน สตีเวนส์ วิลเลียม ริชาร์ด

    15.7. กฎการดีบัก การดีบักไม่ใช่มนต์ดำ หลักการและเทคนิคสามารถเรียนรู้และนำไปใช้ได้อย่างต่อเนื่องโดยทุกคน เพื่อจุดประสงค์นี้ เราขอแนะนำหนังสือ Debugging โดย David J. Agans (ISBN: 0-8144-7168-4) หนังสือมีเว็บไซต์สรุปกติกาและ

    จากหนังสือคำอธิบายภาษา PascalABC.NET ผู้เขียน ทีมงานรูบอร์ด

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

    จากหนังสือ The Ideal Programmer จะเป็นผู้เชี่ยวชาญด้านการพัฒนาซอฟต์แวร์ได้อย่างไร ผู้เขียน มาร์ติน โรเบิร์ต เอส.

    เทคนิคการดีบักภาคผนวก B ภาคผนวกนี้ประกอบด้วยแนวทางและเทคนิคบางประการสำหรับการดีบักแอปพลิเคชันเครือข่าย วิธีการข้างต้นไม่ใช่ยาครอบจักรวาลสำหรับทุกคน ปัญหาที่เป็นไปได้อย่างไรก็ตาม มีเครื่องมือมากมายที่ใช้อยู่

    จากหนังสือของผู้เขียน

    ส่วนการแก้ไขจุดบกพร่อง ในเวอร์ชัน 4.9 ของสมุดงานการเขียนโปรแกรม มีเครื่องมือปรากฏขึ้นเพื่อให้คุณสามารถแสดงข้อมูลการแก้ไขจุดบกพร่องได้โดยตรงในหน้าต่างสมุดงาน (ใน ส่วนพิเศษการดีบัก) ความจำเป็นดังกล่าว เงินทุนเพิ่มเติมเกิดขึ้นเมื่อทำงานด้วยเป็นหลัก

    จากหนังสือของผู้เขียน

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