วิธีการตรวจแก้จุดบกพร่องของบริการของ Windows

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 824344 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

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

ความต้องการ

บทความนี้อนุมานว่า คุณไม่คุ้นเคยกับหัวข้อต่อไปนี้:
  • บริการของ windows
  • ดีบักเกอร์ WinDbg

แนบการดีบักเกอร์ WinDbg บริการหลังจากที่การบริการเริ่มต้น

วิธีนี้จะเหมือนกับวิธีการที่คุณสามารถใช้เพื่อแนบการดีบักเกอร์กับกระบวนการ และกระบวนการตรวจแก้จุดบกพร่องแล้ว

ใช้รหัสขั้นตอนของกระบวนการที่เป็นโฮสต์การบริการที่คุณต้องการตรวจแก้จุดบกพร่อง

  1. เมื่อต้องการกำหนด ID (PID) ของกระบวนการที่เป็นโฮสต์การบริการที่คุณต้องการตรวจแก้จุดบกพร่อง กระบวนการ ใช้วิธีการต่อไปนี้อย่างใดอย่างหนึ่ง
    • วิธีที่ 1: ใช้การจัดการงาน
      1. คลิกขวาที่แถบงาน และจากนั้น คลิกตัวจัดการงาน. กระบวนการตัวจัดการงานของ windowsกล่องโต้ตอบกล่องปรากฏขึ้น
      2. คลิกการกระบวนการแท็บนี้ตัวจัดการงานของ windowsกล่องโต้ตอบ
      3. ภายใต้ชื่ออิมเมจคลิกชื่อรูปของกระบวนการที่เป็นโฮสต์การบริการที่คุณต้องการตรวจแก้จุดบกพร่อง หมายเหตุรหัสขั้นตอนของกระบวนการนี้ตามที่ระบุด้วยค่าตรงกันpidเขตข้อมูล:
    • วิธีที่ 2: ใช้โปรแกรมอรรถประโยชน์ของรายการงาน (tlist.exe)
      1. คลิกเริ่มการทำงานแล้ว คลิกเรียกใช้. กระบวนการเรียกใช้กล่องโต้ตอบปรากฏขึ้น
      2. ในการOPENกล่อง ชนิดcmdแล้ว คลิกตกลง.
      3. หน้าจอพร้อมรับคำสั่ง เปลี่ยนเส้นทางไดเรกตอรีเพื่อให้สะท้อนถึงตำแหน่งที่ตั้งของแฟ้ม tlist.exe บนคอมพิวเตอร์ของคุณ

        หมายเหตุ:แฟ้ม tlist.exe มักจะอยู่ในไดเรกทอรีดังต่อไปนี้: C:\Program Files\Debugging เครื่องมือสำหรับ Windows
      4. ที่พรอมต์คำสั่ง พิมพ์:tlistเมื่อต้องการแสดงรายการชื่อรูปภาพและกระบวนการ id ของกระบวนการทั้งหมดที่กำลังเรียกใช้บนคอมพิวเตอร์ของคุณ

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

    หมายเหตุ:ถ้าพร้อมท์รับคำสั่งไม่ได้เปิด ทำตามขั้นตอนการ และ b ของวิธีที่ 1 แฟ้ม windbg.exe มักจะอยู่ในไดเรกทอรีดังต่อไปนี้: C:\Program Files\Debugging เครื่องมือสำหรับ Windows
  3. ที่พรอมต์คำสั่ง พิมพ์:windbg –pProcessID/gเมื่อต้องการแนบการดีบักเกอร์ WinDbg ไปกระบวนการที่เป็นโฮสต์การบริการที่คุณต้องการตรวจแก้จุดบกพร่อง

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

ใช้ชื่อรูปภาพของกระบวนการที่เป็นโฮสต์การบริการที่คุณต้องการตรวจแก้จุดบกพร่อง

คุณสามารถใช้วิธีนี้ถ้าไม่มีอินสแตนซ์เดียวเท่านั้นที่กำลังทำงานของกระบวนการที่เป็นโฮสต์การบริการที่คุณต้องการเรียกใช้ โดยให้ทำตามขั้นตอนต่อไปนี้::
  1. คลิกเริ่มการทำงานแล้ว คลิกเรียกใช้. กระบวนการเรียกใช้กล่องโต้ตอบปรากฏขึ้น
  2. ในการOPENกล่อง ชนิดcmdแล้ว คลิกตกลงเมื่อต้องการเปิดพร้อมท์คำสั่ง
  3. หน้าจอพร้อมรับคำสั่ง เปลี่ยนเส้นทางไดเรกตอรีเพื่อให้สะท้อนถึงตำแหน่งที่ตั้งของแฟ้ม windbg.exe บนคอมพิวเตอร์ของคุณ

    หมายเหตุ:แฟ้ม windbg.exe มักจะอยู่ในไดเรกทอรีดังต่อไปนี้: C:\Program Files\Debugging เครื่องมือสำหรับ Windows
  4. ที่พรอมต์คำสั่ง พิมพ์:windbg –pnImageName/gเมื่อต้องการแนบการดีบักเกอร์ WinDbg ไปกระบวนการที่เป็นโฮสต์การบริการที่คุณต้องการตรวจแก้จุดบกพร่อง

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

เริ่มการทำงานดีบักเกอร์ WinDbg และแนบกระบวนการที่เป็นโฮสต์การบริการที่คุณต้องการตรวจแก้จุดบกพร่อง

  1. เปิด Windows Explorer
  2. ค้นหาแฟ้ม windbg.exe บนคอมพิวเตอร์ของคุณ

    หมายเหตุ:The windbg.exe file is typically located in the following directory: C:\Program Files\Debugging Tools for Windows
  3. Run the windbg.exe file together with the/gcommand-line switch to start the WinDbg debugger. กระบวนการ/gcommand-line switch allows the tracked process to continue after the break point is set.
  4. ในการแฟ้ม:เมนู คลิกAttach to a Processเมื่อต้องการแสดงนี้แนบกับการดำเนินการกล่องโต้ตอบกล่อง
  5. Click to select the node that corresponds to the process that hosts the service that you want to debug, and then clickตกลง.
  6. In the dialog box that appears, clickใช่to save base workspace information. Notice that you can now debug the disassembled code of your service.

Configure a service to start with the WinDbg debugger attached

You can use this method to debug services if you want to troubleshoot service-startup-related problems.
  1. Configure the "Image File Execution" options. To do this, use one of the following methods:
    • Method 1: Use the Global Flags Editor (gflags.exe)
      1. เปิด Windows Explorer
      2. Locate the gflags.exe file on your computer.

        หมายเหตุ:The gflags.exe file is typically located in the following directory: C:\Program Files\Debugging Tools for Windows.
      3. Run the gflags.exe file to start the Global Flags Editor.
      4. ในการImage File Nametext box, type the image name of the process that hosts the service that you want to debug. For example, if you want to debug a service that is hosted by a process that has MyService.exe as the image name, typeMyService.exe.
      5. ภายใต้ปลายทาง, click to select theImage File Optionsตัวเลือก
      6. ภายใต้Image Debugger Options, click to select theDebuggerกล่องกาเครื่องหมาย
      7. ในการDebuggertext box, type the full path of the debugger that you want to use. For example, if you want to use the WinDbg debugger to debug a service, you can type a full path that is similar to the following:C:\Program Files\Debugging Tools for Windows\windbg.exe
      8. คลิกนำไปใช้แล้ว คลิกตกลงto quit the Global Flags Editor.
    • Method 2: Use Registry Editor
      1. คลิกเริ่มการทำงานแล้ว คลิกเรียกใช้. กระบวนการเรียกใช้กล่องโต้ตอบปรากฏขึ้น
      2. ในการOPENกล่อง ชนิดregeditแล้ว คลิกตกลงto start Registry Editor.
      3. สิ่งสำคัญนี้ส่วน วิธี หรืองานประกอบด้วยขั้นตอนที่บอกวิธีการแก้ไขรีจิสทรี อย่างไรก็ตาม ปัญหาร้ายแรงอาจเกิดขึ้นหากคุณปรับเปลี่ยนรีจิสทรีไม่ถูกต้อง ดังนั้น โปรดตรวจสอบให้แน่ใจว่าคุณได้ทำตามขั้นตอนเหล่านี้อย่างระมัดระวัง สำหรับการป้องกันเพิ่มเติม ให้สำรองรีจิสทรีก่อนทำการปรับเปลี่ยน เพื่อที่คุณจะสามารถคืนค่ารีจิสทรีได้หากมีปัญหาเกิดขึ้น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสำรองข้อมูลและคืนค่ารีจิสทรี โปรดคลิกที่หมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
        322756วิธีการสำรองข้อมูลและคืนค่ารีจิสทรีใน Windows


        In Registry Editor, locate, and then right-click the following registry subkey:
        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
      4. ชี้ไปที่ใหม่แล้ว คลิกคีย์:. ในบานหน้าต่างด้านซ้ายของ'ตัวแก้ไขรีจิสทรี' สังเกตว่าคีย์ใหม่#1มีเลือก (ชื่อของคีย์ย่อยของรีจิสทรีใหม่) สำหรับการแก้ไข
      5. ประเภท:ImageNameเมื่อต้องการแทนคีย์ใหม่#1แล้ว กด ENTER

        หมายเหตุ:ImageNameตัวยึดสำหรับชื่อรูปภาพของกระบวนการที่เป็นโฮสต์การบริการที่คุณต้องการตรวจแก้จุดบกพร่องได้ ตัวอย่างเช่น ถ้าคุณต้องการตรวจแก้จุดบกพร่องของบริการที่โฮสต์ โดยการดำเนินการที่มี MyService.exe เป็นชื่อรูป พิมพ์MyService.exe.
      6. คลิกขวาที่คีย์ย่อยของรีจิสทรีที่คุณสร้างในขั้นตอน e
      7. ชี้ไปที่ใหม่แล้ว คลิกค่าสายอักขระ. ในบานหน้าต่างด้านขวาของตัวแก้ไขรีจิสทรี สังเกตว่าค่าใหม่#1มีเลือกชื่อของรายการรีจิสทรีใหม่ สำหรับการแก้ไข
      8. REPLACEค่าใหม่#1with:ดีบักเกอร์แล้ว กด ENTER
      9. คลิกขวาดีบักเกอร์รีจิสทรีรายการ ที่คุณสร้างขึ้นในขั้นตอน h แล้ว คลิกปรับเปลี่ยน. กระบวนการแก้ไขสายอักขระกล่องโต้ตอบปรากฏขึ้น
      10. ในการข้อมูลค่า:กล่องข้อความ ชนิดDebuggerPathแล้ว คลิกตกลง.

        หมายเหตุ:DebuggerPathเป็นตัวยึดสำหรับเส้นทางแบบเต็มของการดีบักเกอร์ที่คุณต้องการใช้ ตัวอย่างเช่น ถ้าคุณต้องการใช้ดีบักเกอร์ WinDbg เพื่อดีบักการบริการ คุณสามารถพิมพ์เส้นทางแบบเต็มรูปแบบที่คล้ายกับข้อความต่อไปนี้:
        C:\Progra~1\Debugg~1\windbg.exe
  2. ตรวจสอบสำหรับการดีบักเกอร์หน้าต่าง จะปรากฏบนเดสก์ท็อปของคุณ และโต้ตอบกับดีบัก ให้บริการของคุณแบบโต้ตอบ ถ้าคุณไม่ได้รับบริการของคุณแบบโต้ตอบ ดีบักจะเริ่มต้น แต่คุณไม่สามารถดู และคุณไม่สามารถออกคำสั่ง เมื่อต้องการให้บริการของคุณแบบโต้ตอบ ใช้รายการใดรายการหนึ่งในวิธีการต่อไปนี้:
    • วิธีที่ 1: ใช้คอนโซลบริการ
      1. คลิกเริ่มการทำงานจากนั้น ชี้ไปที่โปรแกรม.
      2. ในการโปรแกรมเมนู ให้ชี้ไปที่เครื่องมือการดูแลระบบแล้ว คลิกบริการ. กระบวนการบริการส่วนควบคุมปรากฏขึ้น
      3. ในบานหน้าต่างด้านขวาของบริการคอนโซล คลิกขวาServiceNameแล้ว คลิกคุณสมบัติ.

        หมายเหตุ:ServiceNameตัวยึดสำหรับชื่อของบริการที่คุณต้องการตรวจแก้จุดบกพร่องได้
      4. ในการล็อกอินแท็บ คลิกเพื่อเลือกนั้นอนุญาตให้บริการการโต้ตอบกับเดสก์ท็อปกล่องกาเครื่องหมายที่อยู่ภายใต้บัญชีระบบภายในแล้ว คลิกตกลง.
    • วิธีที่ 2: ใช้ตัวแก้ไขรีจิสทรี
      1. ค้นหาใน'ตัวแก้ไขรีจิสทรี' และคลิกคีย์ ย่อยของรีจิสทรีต่อไปนี้:
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName
        หมายเหตุ:REPLACEServiceNameมีชื่อของบริการที่คุณต้องการตรวจแก้จุดบกพร่อง ตัวอย่างเช่น ถ้าคุณต้องการตรวจแก้จุดบกพร่องของบริการชื่อ MyService ค้นหา และคลิ กที่รีจิสทรีคีย์ต่อไปนี้:
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService
      2. ภายใต้การชื่อ:ฟิลด์ในบานหน้าต่างด้านขวาของตัวแก้ไขรีจิสทรี คลิกขวาประเภท:แล้ว คลิกปรับเปลี่ยน. กระบวนการแก้ไขค่า DWORDกล่องโต้ตอบปรากฏขึ้น
      3. เปลี่ยนข้อความในนั้นข้อมูลค่า:กล่องข้อความไปยังผลลัพธ์ของการดำเนินการ OR ในไบนารีด้วยค่าไบนารีของข้อความปัจจุบันและไบนารีค่า 0x00000100 เป็นตัวถูกดำเนินการสอง ไบนารีค่า 0x00000100 ที่สอดคล้องกับค่าคงของ SERVICE_INTERACTIVE_PROCESS ที่กำหนดไว้ในแฟ้มของส่วนหัว WinNT.h บนคอมพิวเตอร์ของคุณ ค่าคงที่นี้ระบุว่า เป็นบริการแบบโต้ตอบในธรรมชาติ
  3. When a service starts, the service communicates to the Service Control Manager how long the service must have to start (the time-out period for the service). If the Service Control Manager does not receive a "service started" notice from the service within this time-out period, the Service Control Manager terminates the process that hosts the service. This time-out period is typically less than 30 seconds. If you do not adjust this time-out period, the Service Control Manager ends the process and the attached debugger while you are trying to debug. To adjust this time-out period, follow these steps:
    1. In Registry Editor, locate, and then right-click the following registry subkey:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
    2. ชี้ไปที่ใหม่แล้ว คลิกค่า DWORD. In the right pane of Registry Editor, notice thatค่าใหม่#1(the name of a new registry entry) is selected for editing.
    3. ประเภท:ServicesPipeTimeoutto replaceค่าใหม่#1แล้ว กด ENTER
    4. คลิกขวาServicesPipeTimeoutregistry entry that you created in step c, and then clickปรับเปลี่ยน. กระบวนการแก้ไขค่า DWORDdialog box appears.
    5. ในการข้อมูลค่า:กล่องข้อความ ชนิดTimeoutPeriodแล้ว คลิกตกลง

      หมายเหตุ:TimeoutPeriodis a placeholder for the value of the time-out period (in milliseconds) that you want to set for the service. For example, if you want to set the time-out period to 24 hours (86400000 milliseconds), type86400000.
    6. เริ่มต้นระบบคอมพิวเตอร์ใหม่ You must restart the computer for Service Control Manager to apply this change.
  4. Start your Windows service. โดยให้ทำตามขั้นตอนต่อไปนี้::
    1. คลิกเริ่มการทำงานจากนั้น ชี้ไปที่โปรแกรม.
    2. ในการโปรแกรมเมนู ให้ชี้ไปที่เครื่องมือการดูแลระบบแล้ว คลิกบริการ. กระบวนการบริการconsole appears.
    3. ในบานหน้าต่างด้านขวาของบริการconsole, right-clickServiceNameแล้ว คลิกเริ่มการทำงาน.

      หมายเหตุ:ServiceNameis a placeholder for the name of the service that you want to debug.

การแก้ไขปัญหา

Before you try to debug a service across a network, make sure that the symbols and the source files that the service uses are accessible from the computer where the service will run. เมื่อต้องการทำเช่นนี้ ให้ใช้วิธีการใดวิธีการหนึ่งต่อไปนี้:
  • Grant at least read-access permissions to everyone for the folder on your computer that contains the symbols and the source files that the service uses.
  • Copy these symbols and source files that the service uses to the computer where the service will run.

ข้อมูลอ้างอิง

To download the tools and the utilities that are mentioned in this article, visit the following Microsoft Web site:
Debugging tools for Windows: Overview
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
For more information, visit the following Microsoft Developer Network (MSDN) Web sites:
WinDbg debugger
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
บริการ
http://msdn2.microsoft.com/en-us/library/ms685141.aspx
Using the Global Flags utility
http://msdn2.microsoft.com/en-us/library/ms792858.aspx

คุณสมบัติ

หมายเลขบทความ (Article ID): 824344 - รีวิวครั้งสุดท้าย: 23 กันยายน 2554 - Revision: 3.0
ใช้กับ
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional Edition
Keywords: 
kbimghlp kbregistry kbservice kbdebug kbmisctools kbhowtomaster kbmt KB824344 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:824344

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com