สัญลักษณ์การโหลด Visual Studio


166

ฉันกำลังทำงานในโครงการColdFusionชั่วขณะหนึ่งแล้ว Visual Studio ก็เริ่มมีพฤติกรรมแปลก ๆ สำหรับฉันอย่างน้อยที่สุด

ฉันสังเกตว่าเมื่อฉันเริ่มต้นการดีบักมันสร้างโครงการมันเริ่มการปรับใช้และการปรับใช้เสร็จสิ้นและมันเริ่มโหลดสัญลักษณ์สำหรับโครงการของฉัน

แต่มันช้ามากและฉันไม่รู้ว่าทำไมจึงเริ่มทำตามขั้นตอนนี้ ฉันจะทำอะไรได้บ้าง

การโหลดสัญลักษณ์นี้จำเป็นหรือไม่? ฉันจะปิดการใช้งานได้อย่างไร

ในกล่องเครื่องมือ -> ตัวเลือก -> การดีบั๊ก -> สัญลักษณ์ไม่มีการเพิ่มตำแหน่งไฟล์สัญลักษณ์ (.pdb) และฉันชี้ไปที่ไดเรกทอรีการดีบักของโครงการที่ฟิลด์ด้านล่างและฉันตรวจสอบช่องทำเครื่องหมาย "ค้นหาไดเรกทอรีด้านบนเฉพาะเมื่อสัญลักษณ์เป็น .... " ฉันจะตั้งค่ากล่องโต้ตอบนี้เพื่อปิดการโหลดสัญลักษณ์ได้อย่างไร

ฉันดูในหน้าต่างโมดูลที่โหลดสัญลักษณ์ แต่มันไม่ได้บอกอะไรฉัน อะไรคือปัญหา?

ป้อนคำอธิบายรูปภาพที่นี่


3
ฉันได้ลองทุกคำตอบในชุดข้อความโดยไม่มีโชค
Johan Larsson

3
ใช้สัญลักษณ์ที่ควรแคชและควรใช้เวลาน้อยในการโหลดเพียงครั้งเดียวเท่านั้นที่คุณจะสังเกตเห็นว่าสัญลักษณ์กำลังโหลดช้าหากสัญลักษณ์นั้นโหลดจากเซิร์ฟเวอร์สัญลักษณ์ของ Microsoft ซึ่งช้ามากเช่น (ไม่ช้ามาก แต่ช้าไม่มีเลย น้อย) ดังนั้นวิธีหนึ่งที่ดีในการลองและพยายามแก้ไขปัญหานี้คือการลบแคชสัญลักษณ์เพียงแค่ไปที่ Debug -> ตัวเลือก -> ดีบั๊ก -> สัญลักษณ์และคลิกแคชสัญลักษณ์ว่างเปล่าหากไม่ได้ผล อาจเป็นปัญหาอื่นโดยสิ้นเชิงหวังว่าสิ่งนี้จะเป็นประโยชน์กับคนที่เห็นเนื่องจากคำถามมีอายุ 3 ปี (:
daniel

คำตอบ:


266

แก้ไขข้อบกพร่อง -> ลบเบรกพอยต์ทั้งหมด ( http://darrinbishop.com/blog/2010/06/sharepoint-2010-hangs-after-visual-studio-2010-f5-debugging ) หลังจากนั้นคุณสามารถใช้งานได้อีกครั้ง แต่ทำได้ ครั้งหนึ่ง มันจะลบจุดพักที่ "ไม่ถูกต้อง" บางส่วนออกจากนั้นการโหลดสัญลักษณ์จะเร็วขึ้นอีกครั้ง ฉันกำลังไล่ตามปัญหานี้มาหลายวันแล้ว :(


4
ผู้ใช้ Visual Web Developer 2010 Express สามารถกด CTRL + SHIFT + F9 และพรอมต์ "คุณต้องการลบจุดพักทั้งหมดหรือไม่" จะปรากฏขึ้น คุณต้องเบรกพอยต์ที่ใช้งานอยู่อย่างน้อยหนึ่งตัว (ไม่แน่ใจว่าจุดพักพื้นหลังที่เป็นปัญหานับได้หรือไม่ให้ตั้งค่าหนึ่ง) ขอบคุณ! เร็วกว่านี้มาก ...
Cymen

ช่างเป็นดาว! ขอบคุณมาก.
user489998

อันนี้ใช้งานได้จริง! ! เหลือเชื่อ มีใครรายงานข้อผิดพลาดที่ชัดเจนนี้ไปยัง Microsoft แล้วใช่ไหม
real_yggdrasil

การเริ่มต้นของคุณนี่ทำให้ฉันบ้าไปแล้วหลายวัน ขอบคุณหนึ่งล้าน!
markpcasey

นั่นเป็นสิ่งที่คาดไม่ถึง! มันได้ผลจริงๆ คุณบันทึกวันของฉันขอบคุณมาก!
tmatuschek

132

สาเหตุของการโหลดช้าคือถ้าคุณปิดใช้งาน "เปิดใช้งานรหัสของฉัน" ในตัวเลือกการดีบัก หากต้องการเปิดใช้งานให้ไปที่:

Tools -> Options -> Debugging -> General -> Enable Just My Code (Managed Only) 

ตรวจสอบให้แน่ใจว่าได้ตรวจสอบแล้ว


ตัวเลือก "Just My Code" ไม่พร้อมใช้งานในกล่องโต้ตอบตัวเลือกใน Express Studio รุ่น Visual Express บางรุ่น (อยู่ใน Visual C # 2010 Express) แต่สามารถเปลี่ยนแปลงได้ด้วยวิธีอื่น: ฉันจะปิดการใช้งาน 'Just My Code ได้อย่างไร 'ใน Visual Basic 2005 Express หรือไม่ .
Peter Mortensen

3
นี่คือสิ่งที่แก้ไขสำหรับฉัน ... ไม่ใช่คำตอบ "ลบจุดพักทั้งหมด"
Mark Brittingham

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

คุณบันทึกครึ่งวันของฉัน ... ! : D
Vaibhav Deshmukh

43

กำหนดค่าในเครื่องมือตัวเลือกการดีบักสัญลักษณ์

คุณสามารถดูหน้าต่างเอาต์พุต (มุมมองเอาต์พุต) เพื่อดูว่ามันทำอะไรเป็นปกติ หากช้ามากนั่นอาจหมายถึงการกดปุ่มเซิร์ฟเวอร์สัญลักษณ์อาจเป็น Microsoft เพื่อดาวน์โหลดสัญลักษณ์ที่หายไป การทำเช่นนี้ใช้ HTTP ฮิตสามครั้งสำหรับแต่ละไฟล์ที่ไม่สามารถค้นหาได้ในทุกครั้งที่เริ่มต้น - บางครั้งคุณสามารถเห็นสิ่งนี้ได้ในแถบสถานะที่ด้านล่างหรือในเช่น Fiddler คุณสามารถดูว่าโมดูลใดบ้างที่มีสัญลักษณ์โหลดใน Debug, Windows, Modules ขณะที่คุณกำลังดีบั๊ก

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


3
ในกล่องเครื่องมือ -> ตัวเลือก -> การดีบั๊ก -> สัญลักษณ์ไม่มีการเพิ่มตำแหน่งไฟล์สัญลักษณ์ (.pdb) และฉันชี้ไปที่ไดเรกทอรีการดีบักของโครงการที่ฟิลด์ด้านล่างและฉันตรวจสอบช่องทำเครื่องหมาย "ค้นหาไดเรกทอรีด้านบนเฉพาะเมื่อสัญลักษณ์เป็น .... " ฉันไม่ทราบว่าฉันควรตั้งค่ากล่องโต้ตอบนี้เพื่อปิดการโหลดสัญลักษณ์
arnoldino

1
อืมข้าไม่รู้แล้ว คุณจำเป็นต้องโหลดสัญลักษณ์สำหรับรหัสของคุณเองเพื่อดีบักดังนั้นฉันไม่คิดว่าคุณต้องการปิดมันทั้งหมด ฉันเดาแล้วฉันจะดูที่หน้าต่างโมดูลเพื่อดูว่ามีสัญลักษณ์ใดโหลดแล้วหาว่าอันไหนที่คุณต้องการจริงๆแล้วอาจลบ. pdbs ออกจากแคชสัญลักษณ์ของคุณสำหรับสิ่งที่คุณไม่ต้องการ?
โฟโต้

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

1
ปิดใช้งานเซิร์ฟเวอร์สัญลักษณ์ของ Microsoft ในเครื่องมือ -> ตัวเลือก -> การดีบัก -> สัญลักษณ์ที่แก้ไขสิ่งนี้สำหรับฉัน ก่อนที่ฉันจะรอ 30 วินาทีเพื่อให้การดีบั๊กเริ่มต้น ตอนนี้มันแค่เสี้ยววินาที
Mike Chamberlain

41

เพิ่งมีปัญหานี้

ฉันแก้ไขโดยไปที่:

เครื่องมือ -> ตัวเลือก -> การดีบัก -> สัญลักษณ์

จากนั้นให้ยกเลิกการเลือกแหล่งที่ไม่ใช่ในพื้นที่ทั้งหมดสำหรับไฟล์ Symbol (.pdb)

เช่นMicrosoft Symbol Serversและmsdl.microsoft.com/download/symbols


23

ฉันประสบปัญหาคล้ายกัน ในกรณีของฉันฉันได้ตั้งค่า _NT_SYMBOL_PATH ให้ดาวน์โหลดจาก Microsoft Servers เพื่อใช้ใน WinDbg และดูเหมือนว่าเมื่อตั้งค่า Visual Studio จะใช้สิ่งนั้นโดยไม่สนใจเลย การลบตัวแปรสภาพแวดล้อมนั้นแก้ไขปัญหาของฉันได้


สิ่งนี้แก้ไขปัญหาให้ฉันด้วย (ฉันเดาว่าจำนวน upvotes ที่ต่ำนั้นเกิดจากคนจำนวนน้อยที่ตั้งค่าตัวแปรนี้ ... ) ขอบคุณ!
Aasmund Eldhuset

กันที่นี่ ฉันคิดว่าฉันสามารถยกเลิกการเลือกจากสัญลักษณ์ได้ แต่ไม่ต้องลบ / เปลี่ยนชื่อ env var
codekaizen

16

คุณสามารถลองคำตอบต่อไปนี้สำหรับการดีบัก / โหลด Visual Studio ช้ามาก :

  1. ไปที่เครื่องมือ -> ตัวเลือก -> การดีบัก -> ทั่วไป

  2. ตรวจสอบเครื่องหมายถูกถัดจาก "เปิดใช้งาน Just My Code"

  3. ไปที่เครื่องมือ -> ตัวเลือก -> การดีบัก -> สัญลักษณ์

  4. คลิกที่ปุ่ม "... " และสร้าง / เลือกโฟลเดอร์ใหม่ที่ใดที่หนึ่งในคอมพิวเตอร์ของคุณเพื่อเก็บสัญลักษณ์แคช ฉันชื่อเหมือง "การแคชสัญลักษณ์" และวางไว้ในเอกสาร -> Visual Studio 2012

  5. คลิกที่ "โหลดสัญลักษณ์ทั้งหมด" และรอให้สัญลักษณ์ดาวน์โหลดจากเซิร์ฟเวอร์ของ Microsoft ซึ่งอาจใช้เวลาสักครู่ โปรดทราบว่าปุ่มโหลดสัญลักษณ์ทั้งหมดจะใช้ได้เฉพาะในขณะที่การดีบั๊ก

  6. แยกเครื่องหมายถูกที่อยู่ถัดจาก "Microsoft Symbol Servers" เพื่อป้องกัน Visual Studio จากการสอบถามเซิร์ฟเวอร์ Microsoft จากระยะไกล

  7. คลิก "ตกลง"

ลองลบเบรกพอยต์ทั้งหมด (ดีบัก> ลบเบรกพอยต์ทั้งหมด)

ดูเพิ่มเติมที่ : Visual Studio 2015 RC1 ค้างในโหมดดีบั๊กขณะโหลดสัญลักษณ์


6

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

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

3
ขอบคุณสำหรับวิธีแก้ปัญหาที่บ้าคลั่งนี้ (พร้อมข้อความ 'คุณต้องการหยุดการดีบัก') ฉันลองคำตอบอื่นก่อน แต่จนถึงเพียงแค่ "X" สีแดงและเคล็ดลับ 'คุณต้องการ ... ' กำลังช่วย ขอขอบคุณคุณฉันได้สูญเสียสติของฉัน ...
pestophagous

2
@que: เฮ้ยินดีต้อนรับ! ฉันค้นพบโดยบังเอิญ ดูเหมือนว่า VS จะมีการวนรอบข้อความแยกกันซึ่งจะเข้าสู่กล่องโต้ตอบแบบโมดอลดังนั้นเมื่อใดก็ตามที่มันมีความเฉื่อยชาโดยไม่มีเหตุผลการเปิดกล่องโต้ตอบช่วย :-) บางครั้ง:
Cameron

6

เพิ่งพบปัญหานี้ การลบเบรกพอยต์ไม่ทำงานหรืออย่างน้อยก็ไม่ได้ทำด้วยตัวเอง หลังจากสิ่งนี้ล้มเหลวฉันไปที่เครื่องมือ> ตัวเลือก> การดีบัก> สัญลักษณ์และ "แคชสัญลักษณ์ว่างเปล่า"

จากนั้นทำความสะอาดโซลูชันและสร้างใหม่

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


2

ในกรณีของฉัน Visual Studio กำลังค้นหา PDB บุคคลที่สามในเส้นทางที่บนเครื่องของฉันอ้างอิงไดรฟ์ออปติคัล หากไม่มีแผ่นดิสก์ในถาดจะใช้เวลาประมาณ Windows ประมาณ 30 ถึงจะล้มเหลวซึ่งจะทำให้ Visual Studio ช้าลงเนื่องจากพยายามโหลด PDB จากตำแหน่งนั้น รายละเอียดเพิ่มเติมมีอยู่ในคำตอบที่สมบูรณ์ของฉันที่นี่: https://stackoverflow.com/a/17457581/85196


2

ฉันมีปัญหาเดียวกันและแม้หลังจากปิดการโหลดสัญลักษณ์การโหลดโมดูลใน Visual Studio ช้ามาก

วิธีแก้ไขคือปิดซอฟต์แวร์ป้องกันไวรัส (ในกรณีของฉัน NOD32) หรือดีกว่าเพื่อเพิ่มข้อยกเว้นเพื่อให้ละเว้นเส้นทางที่กระบวนการของคุณกำลังโหลดชุดประกอบ (ในกรณีของฉันคือโฟลเดอร์ GAC และ ASP ชั่วคราว โฟลเดอร์. NET Files)


2

2 เซนต์ของฉัน

ฉันมีปัญหาคล้ายกันในขณะที่พยายามรับรายงานการวินิจฉัย (Visual Studio 2013) ในโหมดการปล่อย x64 (การสุ่มตัวอย่าง CPU) และในขณะที่สัญลักษณ์สำหรับไฟล์ dll ที่ต้องการถูกโหลดสัญลักษณ์สำหรับปฏิบัติการของฉันจะไม่สามารถโหลดได้

ฉันไม่ได้เปลี่ยนแปลงอะไรเลยในเมนู Symbols แต่ฉันได้ทำการเปลี่ยนแปลงบางอย่างภายในหน้าคุณสมบัติของเธรดที่สามารถใช้งานได้ของฉันใน Solution Explorer ซึ่งก็คือ

คุณสมบัติการกำหนดค่า / ทั่วไป / เปิดใช้งาน Build ที่เพิ่มขึ้นที่มีการจัดการเป็น YES

คุณสมบัติการกำหนดค่า / การดีบัก / รวมสภาพแวดล้อมเป็นไม่

คุณสมบัติการกำหนดค่า / C / C ++ / เปิดใช้งานการสืบค้นข้อมูลไปยัง YES (/ FR)

คุณสมบัติการกำหนดค่า / ตัวเชื่อมโยง / เปิดใช้งานการเชื่อมโยงที่เพิ่มขึ้นกับ YES (/ INCREMENTAL)

แก้ไข: อันสุดท้ายนี้ทำกลอุบาย

....

คุณสมบัติการกำหนดค่า / ตัวเชื่อมโยง / การดีบัก / สร้างข้อมูลการดีบักเป็นใช่ (/ DEBUG)

....

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

ความสงบ


1

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


1

Visual Studio 2017 Debug symbol ตัวเลือก "เพิ่มความเร็ว" สมมติว่าคุณยังไม่ได้บ้ากับการปรับแต่งตัวเลือกแล้ว:

  1. ที่ Tools -> Options -> Debugging -> Symbols
    เปิดใช้งาน "Microsoft เซิร์ฟเวอร์สัญลักษณ์" ตัวเลือก
    ข คลิกที่ "Empty Symbol Cache"
    c. ตั้งค่าแคชสัญลักษณ์ของคุณเป็นจุดที่ง่ายต่อการค้นหาเช่นC:\dbg_symbolsหรือ%USERPROFILE%\dbg_symbols
  2. หลังจากเรียกใช้ Debug ใหม่แล้วให้โหลดสัญลักษณ์ทั้งหมดหนึ่งครั้งตั้งแต่เริ่มต้นจนถึงสิ้นสุดหรือมากที่สุดเท่าที่จะทำได้

1A และ 2 เป็นขั้นตอนที่สำคัญที่สุด 1B และ 1C เป็นเพียงการเปลี่ยนแปลงที่มีประโยชน์เพื่อช่วยให้คุณติดตามสัญลักษณ์ของคุณ

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

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


0

การยกเลิกการเลือก "เปิดใช้งานการดีบัก JavaScript สำหรับ ASP.NET (Chrome และ IE)" ในเครื่องมือ -> ตัวเลือก -> การแก้ไขข้อบกพร่อง -> ทั่วไปแก้ไขกรณีของฉันด้วยการไม่พร้อมใช้งานเพื่อเปิดตัวดีบัก VS2017 ด้วยจุดพักที่กำหนดไว้ล่วงหน้า


0

สิ่งเดียวที่ใช้ได้ผลสำหรับฉันคือการเปลี่ยนประเภทรหัส

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

ก่อนหน้านี้ฉันได้เลือกรหัสเนทีเท่านั้น


0

ฉันมีปัญหาที่คล้ายกันซึ่ง Visual Studio เก็บสัญลักษณ์โหลดไว้

ปรากฎว่าฉันเพิ่ม "Command line arguments" ในตัวเลือก Debug และหนึ่งในพารามิเตอร์นั้นไม่ถูกต้อง (ฉันควรจะผ่านในบางค่า) ป้อนคำอธิบายรูปภาพที่นี่

หลังจากฉันลบพารามิเตอร์พิเศษมันจะเริ่มทำงานอีกครั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.