Eğitim
Öğrenme yolu
C# konsol uygulamalarında hata ayıklama (C#, Bölüm 6 ile çalışmaya başlama) - Training
C# konsol uygulamalarında hata ayıklama (C#, Bölüm 6 ile çalışmaya başlama)
Bu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Program veritabanı (.pdb) dosyaları; sembol dosyaları olarak da adlandırılır, projenizin kaynak kodundaki tanımlayıcıları ve deyimleri derlenmiş uygulamalardaki ilgili tanımlayıcılara ve yönergelere eşler. Bu eşleme dosyaları hata ayıklayıcıyı kaynak kodunuzla ilişkilendirerek hata ayıklamayı etkinleştirir.
Visual Studio IDE'den standart Hata Ayıklama derleme yapılandırmasıyla bir proje oluşturduğunuzda, derleyici uygun sembol dosyalarını oluşturur. Bu makalede, IDE'de sembol dosyalarının nasıl yönetileceğini açıklar, örneğin:
Sembol dosyalarının ayrıntılı açıklaması için aşağıdakilere bakın:
.pdb dosyası, uygulamanızın Hata Ayıklama yapılandırmasının artımlı olarak bağlanmasına olanak tanıyan hata ayıklama ve proje durumu bilgilerini tutar. Visual Studio hata ayıklayıcısı, hata ayıklarken iki önemli bilgi parçasını belirlemek için .pdb dosyalarını kullanır:
Sembol dosyaları ayrıca kaynak dosyaların konumunu ve isteğe bağlı olarak bunları almak için sunucuyu gösterir.
Hata ayıklayıcı yalnızca bir uygulama oluşturulduğunda oluşturulan
İpucu
Projenizin çağırdığı Windows kodu veya üçüncü taraf kodu gibi proje kaynak kodunuzun dışında kod hatalarını ayıklamak için, dış kodun uygulamanızdaki derlemelerle tam olarak eşleşmesi gereken .pdb dosyalarının (ve isteğe bağlı olarak kaynak dosyaların) konumunu belirtmeniz gerekir.
Visual Studio IDE'de bir projede hata ayıkladığınızda, hata ayıklayıcı varsayılan olarak bulabileceği sembol dosyalarını otomatik olarak yükler.
Not
Uzak bir cihazda yönetilen kodda hata ayıklarken, tüm sembol dosyalarının yerel makinede veyahata ayıklayıcı seçeneklerinde belirtilen
Hata ayıklayıcısı aşağıdaki konumlarda sembol dosyalarını arar:
Proje klasörü.
DLL veya yürütülebilir dosya (.exe) içinde belirtilen konum.
Varsayılan olarak, bilgisayarınızda bir DLL veya .exe dosyası derlediyseniz, bağlayıcı ilişkili .pdb dosyasının tam yolunu ve dosya adını DLL veya .exe dosyasına yerleştirir. Hata ayıklayıcı, sembol dosyasının bu konumda mevcut olup olmadığını denetler.
DLL veya .exe dosyasıyla aynı klasör.
Sembol dosyaları için hata ayıklayıcı seçeneklerinde belirtilen tüm konumlar. Simge konumlarını eklemek ve etkinleştirmek için bkz. Sembol konumlarını ve yükleme seçeneklerini yapılandırma.
Herhangi bir yerel simge önbellek klasörü.
Seçiliyse Microsoft Sembol Sunucuları gibi belirtilen ağ, internet veya yerel simge sunucuları ve konumları. Visual Studio, symsrv
protokolünü uygulayan sembol sunucularından hata ayıklama sembol dosyalarını indirebilir.
Kullanabileceğiniz sembol sunucuları şunlardır:
Genel Microsoft Sembol Sunucuları: Sistem DLL'sine veya üçüncü taraf kitaplığına yapılan çağrı sırasında oluşan bir kilitlenmede hata ayıklamak için genellikle sistem .pdb dosyalarına ihtiyacınız vardır. Sistem .pdb dosyaları Windows DLL'leri, .exe dosyaları ve cihaz sürücüleri için simgeler içerir. Windows işletim sistemleri, MDAC, IIS, ISA ve .NET için sembolleri genel Microsoft Sembol Sunucularından alabilirsiniz.
İç ağdaki veya yerel makinenizdeki Sembol sunucuları: Ekibiniz veya şirketiniz kendi ürünleriniz için ve dış kaynaklardan gelen semboller için önbellek olarak sembol sunucuları oluşturabilir. Kendi makinenizde bir sembol sunucusu olabilir.
Üçüncü taraf sembol sunucuları: Windows uygulamalarının ve kitaplıklarının üçüncü taraf sağlayıcıları internet üzerindeki sembol sunucusuna erişim sağlayabilir.
Uyarı
Genel Microsoft Sembol Sunucuları dışında bir sembol sunucusu kullanıyorsanız, sembol sunucusunun ve yolunun güvenilir olduğundan emin olun. Sembol dosyaları rastgele yürütülebilir kod içerebileceğinden, güvenlik tehditlerine maruz kalabilirsiniz.
Hata ayıklayıcı varsayılan olarak çeşitli konumlarda sembolleri denetler. Bkz. Hata ayıklayıcısısimgeleri nerede arar?
Araçları>Seçenekleri>Hata Ayıklama>Simgeleri sayfasında şunları yapabilirsiniz:
Simge konumlarını ve yükleme seçeneklerini belirtmek için:
Not
Bu seçenekler Visual Studio 2022 Sürüm 17.12 Önizleme 1'de güncelleştirildi.
Visual Studio'da Araçları>Seçenekleri'ni açın>Hata Ayıklama>Simgeleri (veya Hata Ayıklama>Seçenekleri>Simgeler).
Simge dosyası (.pdb) konumları altında.
Microsoft Sembol Sunucuları veya NuGet.org Sembol Sunucusukullanmak için onay kutusunu seçin.
Yeni bir sembol sunucusu konumu eklemek için
Not
Yalnızca belirtilen klasörde arama yapılır. Aramak istediğiniz alt klasörler için girdiler eklemeniz gerekir.
Yeni bir Azure DevOps Sembol Sunucusu konumu eklemek için:
Araçlar/ Seçenekler/ Hata Ayıklama/Simgeler yeni sunucu simgesi
Azure DevOps Sembol Sunucusuna Bağlan
Ek bilgi için bkz. Azure Artifacts sembol sunucusunu ekle.
Simge konumlarının yükleme sırasını değiştirmek için
URL'yi veya yolu düzenlemek için, girdiye çift tıklayın veya girdiyi seçip F2basın.
Bir girdiyi kaldırmak için, girdiyi seçin ve ardından - simgesini seçin.
(İsteğe bağlı) Simge yükleme performansını geliştirmek için, Bu dizindeki önbellek simgelerialtında, sembol sunucularının sembolleri kopyalayabileceğiniz yerel bir klasör yolu yazın.
Not
Yerel simge önbelleğini C:\Windows veya alt klasör gibi korumalı bir klasöre yerleştirmeyin. Bunun yerine bir okuma-yazma klasörü kullanın.
Not
_NT_SYMBOL_PATH
ortam değişkenini ayarladıysanız, bu dizindeki Cache simgeleri altında ayarlanan değerin yerine geçer.
Hata ayıklayıcının başlatıldığında Simge dosyası (.pdb) konumlarından yüklemesini istediğiniz modülleri belirtin.
Visual Studio'nun hangi simgelerin aranıp yükleneceğine karar vermesine olanak tanımak için Aranacak modül simgelerini otomatik olarak seçin (önerilir) seçeneğini belirleyin. Varsayılan olarak, Visual Studio açık çözümünüz tarafından oluşturulan simgeleri otomatik olarak yükler ve yaygın hata ayıklama işlemlerini gerçekleştirmek için gereken ek simgeleri yükler. Bu, Visual Studio tarafından aranması ve yüklenmesi gereken dosya sayısını azaltarak hata ayıklayıcı performansını artırır. Modül filtrelerini belirtin bağlantısına tıklayarak ek simgelerin yüklenmesini zorlayabilirsiniz.
Visual Studio'yu hata ayıklama işleminizdeki tüm simgeleri yüklemeye zorlamak için hariç tutulmadığı sürece
Özel olarak dışladığınız modüller dışında, sembol dosyası konumundaki tüm modüllerin tüm simgelerini yüklemek için (varsayılan) hariç tutulmadığı sürece
Sembol dosyası konumlarından yalnızca belirttiğiniz modülleri yüklemek içinYalnızca belirtilen modülleri yükle
Tamamseçin.
Hem hangi modül simgelerini arayabileceğinizi otomatik olarak seçer ve Hariç tutulan seçenekler hata ayıklarken hangi simgelerin arandığı üzerinde daha ayrıntılı denetim sahibi olmanıza olanak sağlamadığı sürece Tüm modül simgelerini arayın. Modül filtrelerini belirtmek için şunu seçin:, deneyiminizi ince ayarlayın.
Varsayılan ayarlarda, Aranacak modül simgelerini otomatik olarak seç seçeneği belirlendiğinde, aşağıdaki iletişim kutusunu görürsünüz:
'+' simgesini kullanarak filtreye bir modül ekleyebilirsiniz. Modül filtreleri basit joker karakter eşleştirmeyi destekler. '*' herhangi bir karakter grubuyla eşleşir. Örneğin , '*myproduct*' diğer dosyaların yanı sıra 'myproduct.utilities.dll' ve 'entrypoint.myproduct.exe' gibi dosyaları eşleştirir.
Deneyiminizi daha fazla özelleştirmek için birkaç ek seçenek vardır:
Modüllerin yanında bulunan simgeleri her zaman yükle Visual Studio'ya ilgili .dll veya .exe dosyalarının yanında dosya sisteminde depolanan pdb dosyalarını yüklemesini ister. Bu, örneğin dağıtılan bir web uygulamasında hata ayıklamaya çalışırken yararlı olabilir.
Gerektiğinde ek simgeleri otomatik olarak yükle Visual Studio'ya adımlama gibi yaygın hata ayıklama eylemlerini gerçekleştirmesi için sembolleri aramasını ister( adımladığınız modül projenizde veya modüller filtresinde olmasa bile). Aramanın nasıl belirlendiği Yalnızca Kodum ayarlarınızdan etkilenebilir.
hariç tutulmadığı sürece
Bu iletişim kutusunda, Visual Studio' sembolleri yüklemesini istemediğiniz modülleri
Ek simge seçeneklerini araçları>seçenekleri>hata ayıklama>genel (veya hata ayıklama>seçenekleri>genel) belirleyebilirsiniz:
Dll dışa aktarımlarını yükle (Yalnızca yerel)
C/C++ için DLL dışarı aktarma tablolarını yükler. Ayrıntılar için bkz. DLL dışarı aktarma tabloları. DLL dışarı aktarma bilgilerinin okunması biraz ek yük gerektirdiğinden, dışarı aktarma tablolarının yüklenmesi varsayılan olarak kapalıdır. C/C++ derleme komut satırında da dumpbin /exports
kullanabilirsiniz.
Adres düzeyinde hata ayıklamayı etkinleştirme ve kaynak kullanılamıyorsa ayrıştırma gösterme
Kaynak veya sembol dosyaları bulunamadığında her zaman ayrıştırma işlemini gösterir.
Kaynak sunucu desteğini etkinleştirme
Yerel makinede kaynak kodu olmadığında veya .pdb dosyası kaynak kodla eşleşmediğinde bir uygulamada hata ayıklamaya yardımcı olması için Kaynak Sunucu'ya kullanır. Kaynak Sunucu dosya isteklerini alır ve kaynak denetiminden gerçek dosyaları döndürür. Kaynak Sunucu, uygulamanın .pdb dosyasını okumak için srcsrv.dll adlı bir DLL kullanarak çalışır. .pdb dosyası, kaynak kod deposuna yönelik işaretçilerin yanı sıra depodan kaynak kodu almak için kullanılan komutları içerir.
srcsrv.dll adlı bir srcsrv.inidosyada izin verilen komutları listeleyerek uygulamanın .pdb dosyasından yürütebilecek komutları sınırlayabilirsiniz. srcsrv.ini dosyasını srcsrv.dll ve devenv.exeile aynı klasöre yerleştirin.
Önemli
Rastgele komutlar bir uygulamanın .pdb dosyasına eklenebilir, bu nedenle yalnızca yürütmek istediğiniz komutları srcsrv.ini bir dosyaya yerleştirdiğinizden emin olun. srcsvr.ini dosyasında olmayan bir komut yürütme girişimi bir onay iletişim kutusunun görünmesine neden olur. Daha fazla bilgi için bkz. Güvenlik Uyarısı: Hata Ayıklayıcı Güvenilmeyen Bir Komutu Gerçekleştirmelidir.
Komut parametrelerinde doğrulama yapılmaz, bu nedenle güvenilen komutlara dikkat edin. Örneğin, srcsrv.inicmd.exe listelediyseniz, kötü niyetli bir kullanıcı cmd.exe üzerinde bunu tehlikeli hale getirecek parametreler belirtebilir.
Bu öğeyi ve istediğiniz alt öğeleri seçin. Kısmi güven derlemeleri için kaynak sunucuya izin ver (Yalnızca yönetilen) ve güvenilmeyen kaynak sunucu komutlarını her zaman sormadan çalıştırmak güvenlik risklerini artırabilir.
Visual Studio IDE'den standart Hata Ayıklama derleme yapılandırmasıyla bir proje oluşturduğunuzda, C++ ve yönetilen derleyiciler kodunuz için uygun sembol dosyalarını oluşturur. Kodda derleyici seçeneklerini de ayarlayabilirsiniz.
Visual Studio'da derleme yapılandırmalarınızın derleyici seçeneklerini ayarlamak için bkz. hata ayıklama ve sürüm yapılandırmalarını ayarlama
.pdb dosyası oluşturmak için /debug ile derleyin.
/debug:full veya /debug:pdbonlyile uygulama oluşturabilirsiniz.
/debug:full ile oluşturulduğunda hata ayıklanabilir kod üretir.
/debug:pdbonly ile derleme yapmak .pdb dosyaları oluşturur, ancak JIT derleyicisine hata ayıklama bilgilerinin mevcut olduğunu söyleyen DebuggableAttribute
dosyasını oluşturmaz. Sürüm derlemesini hata ayıklanabilir hale getirmek istemiyorsanız .pdb dosyaları oluşturmak için /debug:pdbonly kullanın. Daha fazla bilgi için bkz. /debug (C# derleyici seçenekleri) veya /debug (Visual Basic).
VC<x>.pdb ve <proje>.pdb dosyaları
/ZI veya /Ziile oluşturduğunuzda C/C++ için .pdb dosyası oluşturulur. Visual C++'da /Fd seçeneği, derleyicinin oluşturduğu .pdb dosyasını adlandırmaktadır. Visual Studio'da IDE kullanarak bir proje oluşturduğunuzda, /Fd seçeneği <project>.pdbadlı bir .pdb dosyası oluşturacak şekilde ayarlanır.
C/C++ uygulamanızı bir derleme dosyası kullanarak derleyip dosya adı belirtmek için /Fd kullanmadan /ZI veya /Zi belirtirseniz, derleyici iki .pdb dosyası oluşturur:
VC<x>.pdb; burada <x> Microsoft C++ derleyicisinin sürümünü temsil eder, örneğin VC11.pdb
VC<x>.pdb dosyası tek tek nesne dosyaları için tüm hata ayıklama bilgilerini depolar ve proje derleme dosyasıyla aynı dizinde yer alır. C/C++ derleyicisi her nesne dosyası oluşturduğunda hata ayıklama bilgilerini VC<x>.pdbile birleştirir. Bu nedenle, her kaynak dosya <windows.h>gibi ortak üst bilgi dosyaları içerse bile, bu üst bilgilerden tür tanımları her nesne dosyasında değil yalnızca bir kez depolanır. Eklenen bilgiler tür bilgilerini içerir, ancak işlev tanımları gibi simge bilgilerini içermez.
<proje>.pdb
.pdb dosyası
Hem VC<x>.pdb hem de <proje>.pdb dosyaları artımlı güncelleştirmelere izin verir. Bağlayıcı, .pdb dosyalarının yolunu da oluşturduğu .exe veya .dll dosyasına ekler.
DLL'nin dışarı aktarma tablosunda bulunan simgeleri görmek için dumpbin /exports
kullanın. DLL dışarı aktarma tablolarındaki sembolik bilgiler, Windows iletileri, Windows yordamları (WindowProcs), COM nesneleri, hazırlama veya simge içermeyen herhangi bir DLL ile çalışmak için yararlı olabilir. 32 bit sistem DLL'leri için simgeler kullanılabilir. Çağrılar, geçerli işlev (en derin iç içe yerleştirilmiş) en üstte olacak şekilde çağrı sırasına göre listelenir.
dumpbin /exports
çıkışını okuyarak alfasayısal olmayan karakterler de dahil olmak üzere tam işlev adlarını görebilirsiniz. İşlev adlarının hata ayıklayıcının başka bir yerinde kesilebileceği için işlev adlarının tam olarak görülmesi, işlevde kesme noktası ayarlamak için yararlıdır. Daha fazla bilgi için bkz. dumpbin /exports.
ASP.NET uygulamanızın web.config dosyasını hata ayıklama moduna ayarlayın. Hata ayıklama modu, ASP.NET dinamik olarak oluşturulan dosyalar için simgeler oluşturmasına neden olur ve hata ayıklayıcının ASP.NET uygulamasına eklemesini sağlar. Projenizi web projeleri şablonundan oluşturduysanız, hata ayıklamaya başladığınızda Visual Studio bunu otomatik olarak ayarlar.
Hata ayıklama sırasında sembolleri yüklemek veya sembol seçeneklerini değiştirmek için Modüller, Çağrı Yığını, Yereller, Otomatiklerveya herhangi bir İzleme penceresini kullanabilirsiniz. Daha fazla bilgi için bkz. Hata ayıklayıcının uygulamanıza nasıl ekli olduğunuhakkında daha fazla bilgi edinin.
Hata ayıklama sırasında Modüller penceresinde hata ayıklayıcının kullanıcı kodu veya Kodum olarak değerlendirdiği kod modülleri ve bunların sembol yükleme durumu gösterilir. Ayrıca Modülleri penceresinde sembol yükleme durumunu izleyebilir, sembolleri yükleyebilir ve simge seçeneklerini değiştirebilirsiniz.
Hata ayıklama sırasında simge konumlarını veya seçeneklerini izlemek veya değiştirmek için:
Seçenek | Açıklama |
---|---|
Yükleme Simgeleri | Atlanmış, bulunamadı veya yüklenmemiş simgeleri olan modüller için görüntülenir.
Seçenekleri>Hata Ayıklama>Simgeleri sayfasında belirtilen konumlardan sembolleri yüklemeyi dener. Simge dosyası bulunamaz veya yüklenmezse, arama için yeni bir konum belirtebilmeniz için dosya gezgini |
Sembol Yükleme Bilgileri | Yüklenen simge dosyasının konumunu veya hata ayıklayıcı dosyayı bulamazsa aranan konumları gösterir. |
Simge Ayarları | Seçenekleri>Hata Ayıklama>Simgeleri sayfasını açar; burada sembol konumlarını düzenleyebilir ve ekleyebilirsiniz. |
Her Zaman Otomatik Olarak Yükle | Seçilen simge dosyasını hata ayıklayıcı tarafından otomatik olarak yüklenen dosyalar listesine ekler. |
Hata ayıklayıcının simge veya kaynak dosyaları olmayan koda girmesinin birkaç yolu vardır:
Bu durumda hata ayıklayıcı, gerekli simgeleri veya kaynağı bulup yüklemenize yardımcı olmak için
Eksik sembolleri bulup yüklemeye yardımcı olmak için Semboller Yüklenmedi belge sayfasını kullanmak için:
Hata ayıklayıcı, seçeneklerden birini yürütürken .pdb dosyasını bulursa ve .pdb dosyasındaki bilgileri kullanarak kaynak dosyayı alabilirse, kaynağı görüntüler. Aksi takdirde, sorunu açıklayan ve muhtemel çözüm eylemlerine bağlantılar içeren Kaynak Yüklenmedi sayfası görüntülenir.
Bir çözüme kaynak dosya arama yolları eklemek için:
Hata ayıklayıcının kaynak dosyaları arayabileceği konumları belirtebilir ve belirli dosyaları aramanın dışında tutabilirsiniz.
Çözüm Gezgini'nde
kaynak dosyalarda hata ayıklama
Kaynak dosyalarda hata ayıklama sayfası
kaynak kodu içeren
Not
Hata ayıklayıcı yalnızca belirtilen dizini arar. Aramak istediğiniz alt dizinler için girdiler eklemeniz gerekir.
"Bu kaynak dosyaları aramayın"altında, aramadan hariç tutulacak kaynak dosyaların isimlerini yazın.
Tamam veya Uygulaseçin.
Eğitim
Öğrenme yolu
C# konsol uygulamalarında hata ayıklama (C#, Bölüm 6 ile çalışmaya başlama) - Training
C# konsol uygulamalarında hata ayıklama (C#, Bölüm 6 ile çalışmaya başlama)
Belgeler
Simge Yükleme Bilgileri İletişim Kutusu - Visual Studio (Windows)
Modüller penceresine sağ tıklayıp Simge Yükleme Bilgileri'ni seçtiğinizde Visual Studio hata ayıklayıcısında açılan Simge Yükleme Bilgileri iletişim kutusunu gözden geçirin.
Hata ayıklayıcısı ile çalıştırma işlemleri iliştirme - Visual Studio (Windows)
Çalışan uygulamaların, Visual Studio'da oluşturulmayan uygulamaların ve diğer senaryoların hatalarını ayıklamak için Visual Studio hata ayıklayıcısını yerel veya uzak bir bilgisayarda çalışan bir işleme ekleyin.
Hata ayıklayıcıda İpuçları ve püf noktaları - Visual Studio (Windows)
Visual Studio hata ayıklayıcısı tarafından desteklenen klavye kısayolları, veri ipuçları ve hata ayıklama sırasında kod düzenleme gibi daha az bilinen özelliklerden bazılarını keşfedin.