.NET kaynak kodunda hata ayıklamak için .cs dosyaları bulunamıyor


93

Bu MDSN adım adım açıklamalı yolunu izleyerek .NET kaynağında hata ayıklamayı ayarlamayı denedim . Sembol önbelleği, '.NET Framework kaynak adımlamayı etkinleştir' işaretinde olduğu gibi doğru şekilde ayarlanmıştır.

Ancak daha sonra, ne zaman .NET koduna adım atmak istersem, ilgili cs dosyasının konumunu belirtmem isteniyor. Hata mesajı You need to find <filename>.cs to view the source for the current call stack frameve The debugger could not locate the source file <filename>.cs.

Dosyaya göz atmam (ama bende yok) veya bir demontajı görüntülemem (ama bunu istemiyorum) öneriliyor.

.NET kaynak koduna nasıl adım atılır?

Yanıtlar:


144

Benim durumumda .Net çerçevesinde hata ayıklamaya çalışmıyordum, ancak aynı hatayı alıyordum: .NET kaynak kodunda hata ayıklamak için .cs dosyaları bulunamıyor . Bu yüzden Araçlar -> Seçenekler -> Hata Ayıklama -> Genel -> Yalnızca Kodumu Etkinleştir altındaki "Yalnızca kodumu etkinleştir" seçeneğini açmak zorunda kaldım.

MS belgelerine göre:

Visual Studio'yu sistem, çerçeve ve diğer kullanıcı olmayan çağrıların üzerinden otomatik olarak geçecek ve çağrı yığını penceresinde bu çağrıları daraltacak şekilde yapılandırabilirsiniz.

https://docs.microsoft.com/en-us/visualstudio/debugger/just-my-code


"Yalnızca kodum" u otomatik olarak devre dışı bırakan ".NET Framework kaynak adımlamayı" etkinleştirmiştim ve bunu bulana kadar içeri giremememe neden oldu. Neyin devre dışı bırakıldığını görmek için seçenekleri işaretlerken dikkatli olun :)
Alan Warden

1
Bunu daha önce etkinleştirdiğimi sanıyordum. Gittim ve kontrol ettim ve kesinlikle kontrol edilmedi. Teşekkürler!
coinbird

1
Harika cevap ve sorunumu çözdü, ancak bu dosyayı atlayacak ve içine girmeyecek. Hedef dosyaya adım atmaksa başka bir çözüme ihtiyaç olabilir.
Kelime Yeniden

52

Kontrol etmek Tools-> Options-> Debugging-> General-> Enable source server supportgizemli bir şekilde her şeyin çalışmasını sağladı. Umarım aynısı senin için doğrudur


19
Tanrım, neden çalışmıyor? Çerçeve koduna geçmeye çalışırken yine de kaynak kod dosyasına göz atmanız isteniyor.
gravidThoughts

29

Bu benim de bir saatimi aldı. Sonunda Ayarlar -> Araçlar -> İçe ve Dışa Aktarma Ayarları -> Tüm ayarları sıfırlayarak sıfırlayarak düzelttim


İşe yaradı! Sıfırladıktan sonra, 'seçenekler-> Hata ayıklama' ayarını yok sayıyorum ve dışa aktardıklarımı içe aktardım. Güzel!!
Mistik Lin

VS 2015 Pro'da çalıştı, elbette ihtiyacım olan herhangi bir özel ayarım yok çünkü bu onları uçurur.
RandomUs1r

Tüm ayarlarımı sıfırlamak da bunu benim için çözdü ... ne baş ağrısı. Hata ayıklama için o kadar çok özel renk ayarım var ki onları ayrı bir dosyaya kaydetmek zorunda kaldım - artık kullanamıyorum, grrr.
EspressoBeans

Ayarları sıfırladım ve Visual Studio 2017'yi yeniden başlattım. Sıfırladıktan sonra yeniden başlatmak hile yaptı.
Siddharth

Visual Basic .NET için VS Ultimate 2013 ile bu sıfırlamayı yaptım çünkü kodladığım şey bu ve bu sıfırlama tek datetime.cs hata mesajını bulamıyor.
JohnH

7

Buradaki cevapların tümü, kaynak kodun içine girmek yerine, kaynak kodunu görmezden gelmekten / kaçınmaktan bahsediyor.

@JBSnorrodoğru yoldadır, ancak sorun Microsoft'un karşılaşabileceğiniz tüm .NET sembollerini / kaynağını yayınlamamasıdır. Bunun kasıtlı olup olmadığını bilmiyorum ama MS kaynaklarına adım atmak için her derlemenin her versiyonunu yayınlamaları gerekiyor ki bu büyük bir lojistik görev.

Tools-> Options-> Debugging-> General-> Enable source server supportbirçok durumda çalışacaktır, ancak örneğin mscorlib.dll4.6.1 için sembollerin ve / veya kaynak kodunun eksik olduğunu buldum . Bu yüzden örnek olarak Dictionary.csya Task.csda benzeri ortak kaynak kodlarına adım atamadım. MS sembol sunucusunun kaynağı ve sembolleri muhtemelen her zaman değiştiğinden beri. Siz bunu okuduğunuzda sorunum çözülebilir mi?

Jetbrain's Rider'da aynı çözümde hata ayıkladığımda, her .NET derlemesindeki her sınıfı sorunsuz bir şekilde görebilir ve adım adım ilerleyebilirim. Ancak VS'de sadece bir sınıfa girebilirim, diğerlerine geçemez miyim?

Gerçekten tüm .NET kaynak koduna adım atmaya kararlıysanız, Jetbrain'in DotPeek'ini kullanabilir ve .NET derlemelerini gerçek .cs dosyalarında diskinize yeniden derleyebilirsiniz. Sonra bunu gördüğünde

Kaynak kod örneği bulunamadı

Artık Diskinizde DotPeek kullanarak derlemesini çözdüğünüz kaynak koduna göz atabilirsiniz. Sadece projenizde referans verdiğiniz aynı derleme sürümünü de derlediğinizden emin olun. Aksi takdirde, semboller doğru kaynak satır numaralarıyla eşleşmeyebilir.

Bunun yerine, sadece bu "Kaynak Bulunamadı" ifadesinin sürekli görünmesini engellemek istiyorsanız ve koda girmeyi umursamıyorsanız, kaynak yok, @Alex Shermancevabını okuyun . Soruna neden olan dosyanın hangi derlemede bulunduğunu bulmanız, ardından bu derleme adını dışlama listesine eklemeniz gerekir.

Düşünmek için yiyecek, Rider over VS hayranı değilim. Rider hala ham bir dokunuş ve VS'nin sahip olduğu çılgın miktarda yerleşik aletten yoksun. Ancak!! Yabani otların derinliklerine inebileceğimi bildiğim bu gibi durumlarda yan yana yerleştirmeyi seviyorum.


7

Derlemeden önce çözümü temizleyin sorunu benim için çözdü.

Sadece gezinin ve tıklayın:

  1. Build-> Clean Solution.
  2. Build-> Build Solution (Ctrl + Shift + B).

7

Yukarıdaki tüm cevapları denedim ve hiçbir şey işe yaramadı.

Bu benim için çözdü:

Debug -> Delete all Breakpoints

ve sorunu çözdü! Bu soruna neden olan pek çok farklı şey.


JIT hata ayıklayıcı ayarlarının her bir kombinasyonunu denedikten, çözümümü temizledikten, VS2019'u yüzlerce kez yeniden başlattıktan, tamir ettikten, tüm ayarlarımı sıfırladıktan vb. Sonra, "Kaynak Bulunamadı" hatamı ortadan kaldıran tüm Kesme Noktalarını sildi , bir XUnit testinde hata ayıklamaya çalışırken. AAAAAAAAAAARGH. Ve teşekkür ederim @HomeMade
Ted

Ek bir adım olarak - benim için çalışmasını sağlamak için çözümümü temizlemem ve yeniden oluşturmam gerekiyordu.
Naren

1

Aynı sorun vardı, yukarıdaki çözümlerden hiçbiri sorunu çözmeme yardımcı olmadı. VS 2017'de gerçekleşti. Projeyi Visual Studio 2019'da çalıştırdığımda her şey çalıştı. Bu yüzden onu başka ortamlarda çalıştırmayı deneyin. Umarım bu cevap birine yardımcı olur


Bana yardımcı oldu. 2019'u kurdum ve her şey tekrar çalışıyor. Belki ayarlarımı bozmuşumdur.
Mo D Genesis

0

Hata "nullable.cs" veya başka bir çekirdek kaynak dosyası aramaktan kaynaklanıyorsa:

Belirli modüller için sembolleri Debug -> Options -> Debugging -> Symbolsve ardından altta kullanarak devre dışı bırakabilirsiniz Specify Excluded Modules.

Bu durumlar için faydalıdır yapmak için PDBs olduğunu diğer ünitelerinin içine adıma devre dışı "Sadece Benim Kanunu" istiyoruz. Bence Visual Studio için semboller ile birlikte geliyor mscorlib.dllama yok değil bu yüzden bazen "nullable.cs" ya da başka bir çekirdek kaynak dosyasının arayacaktır şeylerin içine adım kaynağı bulunmaktadır.



0

Bu hatayı, bir projede bir NuGet paketini güncellerken, çözümün diğer projelerinde güncellemeyi kaçırdım.

Çözümün NuGet Yöneticisine gitmek ve çözümdeki tüm projelerin aynı sürümü kullanmasını sağlayan konsolidasyon işlevini kullanmak benim için sorunu çözdü.


0

Benim durumumda sınıfı yeniden adlandırdım. Belki başka bir modülle karıştırılıyordu. Yeniden adlandırdığımda içeri girebilirdim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.