Gerçek programcılar hata ayıklayıcılar kullanıyor mu? [kapalı]


15

Deneyimli programcılar aslında hiç hata ayıklayıcı kullanırlar ve eğer öyleyse hangi koşullar altında. Bu sorunun cevabında "ay" önce söylediğim halde muhtemelen "yıl" demek istedim - Gerçekten bir hata ayıklayıcı kullanmıyorum. Sorumlu özel sorum şu durumlarda, deneyimli bir programcı olarak hangi hata ayıklayıcıyı kullanırsınız?


14
Deneyimli programcıların klavyeyi kullanıp kullanmadığını sormak gibi ... Onunla ne tür bir deneyim olduğunu anlayamıyorum - sizce Tanrı olduklarını ve en baştan hatasız mükemmel çalışan kodlar oluşturduklarını düşünüyor musunuz? Ve öyle olsa bile sizin için ne anlama geliyor - ihtiyacınız olduğunda debugeer kullanmayı bırakacak mısınız ve yıldız diyor ki: "Hata ayıklayıcı kullanmıyorum, bu yüzden reaa programcısıyım" ... :) BTW. Herhangi bir profesyonelin böyle bir soruyu cevaplayacağından şüpheliyim ...

3
@Wooble: "deneyimli programcılar hata ayıklayıcılar kullanıyor mu?" Temel sorusu iyi bir sorudur. Aslında mini bir kutsal savaş başlatması beni şaşırttı.
Kevin

19
Gerçek programcılar elbette kelebekleri kullanıyor
Rein Henrichs

4
Mevcut hata ayıklayıcıların çoğu eski modadır, berbat arayüzlere sahiptir ve programcıya hakim olması zor olan kavramları ve paradigmaları bilmesini ve anlamasını gerektirir ve günümüzde çoğu programcının kullanmasını veya bilmesini beklemek adil değildir. Sonuç olarak, çoğu modern, deneyimli programcı, deneyimin acısını önlemek için, bir hata ayıklayıcıda nadiren hata ayıklanması gereken kod türünü yazmak için gerekli becerileri öğrenmek için büyük çaba harcar. Yani "evet kullanıyorlar" ve "mümkün olduğunca az"
blueberryfields

7
"Hata ayıklayıcıları kullanmayan" deneyimli programcılar muhtemelen gdb / SoftICE açısından düşünüyorlar ve hiçbir zaman gerçek bir entegre hata ayıklayıcı kullanmamışlar (ve muhtemelen bu konuda IDE kullanmıyorlar). Acı veren zamanların çok gerisindedirler.
BlueRaja - Danny Pflughoeft

Yanıtlar:


44

Bir hata ayıklayıcı kullanmamanın deneyimsizliğin bir işareti olduğunu söyleyebilirim. Kod satır satır ilerlemek yürütme akışını izlemek için en iyi yoldur.


30
o zaman tuhaf o zaman 30 yıldan fazla montajcı, fortran ,, C, C ++ vb programlama sonra birini kullanmak için hiçbir arzu hissediyorum.

59
Uzun bir süre bir şey yapmak sizi mutlaka iyi yapmaz.
ceejayoz

31
Değil edememek bir hata ayıklayıcı kullanabilirsiniz tecrübesizliği bir işaretidir. Bir programın akışını sadece kodu okuyarak anlamak değil. Tabii ki, deneyimli programcılar zaman zaman hata ayıklayıcıya ihtiyaç duyacaktır, ancak kodu okuyabiliyorsanız, buna gerek yoktur ve hata ayıklama işlemini daha hızlı yapmaz.
GolezTrol

10
@Karl Bielefeldt: Hata ayıklama için hata ayıklayıcı kullanmayan programcılardan birkaç ünlü örnek vereyim. Linus Torvalds, Linux yazarı. Larry Wall, Perl'in yazarı. Sizin için yeterince karmaşık bir yazılım mı?
btilly

9
@Neil: Kendi kodunuz üzerinde çalışmak için ne kadar zaman harcıyorsunuz ve başkaları tarafından yazılan kodun ne kadarını koruyorsunuz? Ve özellikle, bir programlama dilinin yakınında hiçbir yerde izin verilmemesi gereken diğer insanlar tarafından yazılan ne kadar sürdürme kodu?
Carson63000

28

Hata ayıklayıcıyı sık sık kullanıyorum çünkü büyük bir sistem üzerinde çalışıyorum ve bu yüzden berbatım. http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html

Kodunuz ne kadar kısa ve sık sık okunuyor olursa olsun, her zaman hatalara sahip olma olasılığı vardır. http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html

Hata yapmak insan ve bir programın doğru olduğunu asla kanıtlayamaz, o zaman neden bu zor işte kendimize yardımcı olmak için hata ayıklayıcı / otomatik test gibi araçları kullanmıyorsunuz?

Kod yeterince kısaysa, basit testler yapılır. Ayrıca, kısa ve hatanın doğasını biliyorsanız, kodu okumak yeterli olabilir. Bununla birlikte, kod tabanı büyük olduğunda, birlikte karıştırılan birkaç dil ve artı 3 kat içerir, o zaman birçok düzeyde iyi test kapsamına ve çok iyi bir hata ayıklayıcıya sahip olmanız gerekir - aksi takdirde çok fazla zaman kaybedersiniz.

Peki, ne zaman hata ayıklayıcıya ihtiyacım yok?

En akıllı kodlayıcı değilim, en tecrübeli değilim, ama yine de bazen hata ayıklayıcıyı kullanmam gerekmiyor. İşte o zaman:

  • Kod benim veya iyi yazılmış AND
  • Okunabilir bir dilde yazılmış VE
  • Genel proje küçük.

Ne zaman bir hata ayıklayıcıya çok güveniyorum?

  • Kısa Cevap: sık sık .
  • Bir uygulama çöktüğünde. Özellikle konuşlandırıldığında. Bu bilgisayarda VS2010 yüklü olması "Bilinmeyen Hata" ile arasında bir fark yaratabilir FileNotFoundException.
  • 3. taraf bir kütüphane çöktüğünde veya yanlış davrandığında.
  • Kod kötü yazıldığında. Özellikle de aynı dosyaya son 10 yılda 10 farklı kişi dokunmuşsa, bunların 7'si artık şirkette değildir.
  • Proje büyük olduğunda
  • Kod oldukça yekpare olduğunda.
  • Birden fazla katman (GUI, SQL, BL) olduğunda.

"Hata ayıklayıcı" nın birden fazla araca başvurabileceğini unutmayın. Visual Studio hata ayıklayıcı, SQL hata ayıklayıcı (çoğunlukla depolanan procs için) ve SQL profiler (hangi SP çağrıldığını bulmak için) de kullanın. Hızlı bir sysadmin-ish Python betiği yazdığım bu kalibre araçlara ihtiyacım var mı? Hayır. Kendi küçük GUI tabanlı aracımı yaparsam? Bağlı olmak. Net WinForms ise - muhtemelen değil. WPF ise - evet.

Zaten bir "gerçek" programcı ne tanımlar? Hızlı olanı? bilgili? Algoritmalarda iyi mi? İyi dokümantasyon yazar mı? Tam olarak ne zaman bu yeni unvana mezun olur? Büyülü çizgiyi ne zaman geçer?

100 yılı aşkın bir mevcut insan çabasıyla ellerini kirletmeyen bir programcının, karmaşıklık ve kendi sınırlamalarına (kod kalitesinden de öfkelenerek) alçalma şansı olmadığını söyleyebilirim.

Şahsen benim için mevcut olan en iyi hata ayıklayıcıyı kullanmaya çalışıyorum ve sık sık kullanıyorum. Bir görev yeterince basitse ve bir hata ayıklayıcı gerektirmiyorsa - o zaman kullanmıyorum. İhtiyacım olup olmadığını anlamak çok uzun sürmüyor.

...

Şimdi, teoride kod tabanını o kadar uzun süre okuyabiliyordum ki, sadece anlıyorum. Ancak, uygulamalı yaklaşım en iyi şekilde çalışır, artı sık sık gördüğüm o aptal kodu yeniden yazmak istiyorum. Ne yazık ki içinde olduğum kod tabanı temizlemek için 10 + yıl sürer. Bu nedenle, hata ayıklayıcı kullanmak açık bir ilk adımdır. Sadece 5 milyon kod satırından hangisinin harekete geçtiğini öğrendiğimde, o sınıfın ne yaptığını anlamaya çalışmak için dosyayı yukarı ve aşağı tarayabilirim.


+1, mükemmel cevap, özellikle "dahil birkaç katlı olduğunda" yönü, "nadiren sadece kodu okumak ve hata bulmak" savunucuları tarafından belirtilen biri ile katılıyorum.
Carson63000

Her şeyi okuyabildiğine sevindim.
İş

+ 1 büyük cevap ve "gerçek bir programcı" tanımını incelemek için. Bu ifadenin kullanılması OP'yi sinsi, ilginç ve potansiyel olarak iltihaplı hale getirdi (imaları kötüleştirmesi veya ima etmemesi nedeniyle).
Smandoli

1
“bir programın doğru olduğunu asla kanıtlayamaz” Bu doğru değil.
GManNickG

1
@ GMan, lütfen açıklamanızı açıklayın. Daha önce öğrendiğim gibi, belirli bir dil için kısa kod snippet'inin doğruluğunu kanıtlamak için önceki birçok deneme başarısız oldu, örneğin kanıt tamamlandıktan sonra birkaç hata bulundu (bu tür kanıtlarda uzmanlaşmış bir profesör tarafından). Bazı çok önemsiz programların doğru olduğu kanıtlanabilir. Burada açınızı merak ediyorum.
İş

17

"Hata ayıklayıcıları sevmiyorum. Asla sahip değil, muhtemelen asla. - Linus Torvalds

Öte yandan, bir Stack Overflow hesabı yok, bu yüzden onun fikriyle ilgilenip ilgilenmediğinden emin değilim :)


3
Pek çoğumuz Linus Torvalds değiliz, geri kalanlarımız için sadece hata ayıklayıcıya ihtiyacımız var.
Nodey Düğüm Adamı

7
çekirdekler hata ayıklayıcılara iyi eğilmez.

7
Evet, çekirdek programlama kullanıcı alanı programlamasından farklı bir alandır. Genellikle Linus'un kullanıcı alanı hakkındaki görüşlerine katılmıyorum, ancak çekirdek alanı ile uğraşırken kesinlikle saygı duyuyorlar.
alternatif

16
"Hata ayıklayıcıları sevmem", "Hata ayıklayıcı kullanmıyorum" anlamına gelmez. Linus'un aslında söylediği şey "Hata ayıklayıcıları sevmiyorum. Asla, muhtemelen asla yapmayacağım. Her zaman gdb kullanıyorum, ama bunu bir hata ayıklayıcı olarak değil, programlayabileceğiniz steroidlerde bir sökücü olarak kullanma eğilimindeyim." (Bazılarının, Linus'un bir hata ayıklayıcı kullanmadığı anlamına gelmesini sağlamaya çalışacağını biliyorum, ancak bu doğru değil.)
Kristopher Johnson

6
Linus Torvalds gibi görünüyor ve ben asla hiçbir şey üzerinde anlaşamıyorum.
BlueRaja - Danny Pflughoeft

11

Sorumlu özel sorum şu durumlarda , deneyimli bir programcı olarak hangi hata ayıklayıcıyı kullanırsınız?

  • Kodunuzu okuyarak "hata ayıklama" işlemi yapılamadığında.
  • Belirli değişkenlerin belirli bir zamana sahip olduğu değerleri tahmin edemediğinizde .
  • Senin ne zaman zihinsel modeli kodunuzun Kodunuzdaki tarafından verilen çıktıyı uymuyor

Düzenle:

Programlama yolculuğumda bir hata ayıklayıcıyı nasıl kullanacağımı bilmeme şansım / talihsizlik yaşadım. Böylece geçmişte bir hata ayıklayıcı olmadan hata ayıklamak zorunda kaldım. Ancak bir hata ayıklayıcı kullanmayı öğrendikten sonra -> Hata bulmada 100 kat daha üretken oldum .


+1 için "Kodunuzun zihinsel modeli kodunuz tarafından verilen çıktıya uymuyorsa"
kullanıcı

8

Mevcut cevaplardan biraz farklı bir bakış açısı vermek; Genellikle gerçek zamanlı bir bileşeni olan sistemlerde çalışan gömülü bir yazılım mühendisi olarak nadiren hata ayıklayıcı kullanıyorum.

Bazen bir hata ayıklayıcı inanılmaz bir araç olabilir ve ne zaman bir masaüstünde kod oluşturmak ve çalıştırmak mümkün o zaman ben her zaman bir hata ayıklayıcı kullanırdım.

Çipte, gerçek zamanlı kısıtlamalar ile, bir hata ayıklayıcı kullanmaya çalışmakla ilişkili ağır bir yük vardır. Yürütmeyi duraklattığınız anda, muhtemelen ölümcül olarak, sistemin geri kalanının zamanlamasını üzersiniz. Genellikle çipte, kritik olmayan kodda printf ve zaman açısından kritik kodda IO sallama en iyi ve aslında en basit araçtır. Bir hata ayıklayıcı kadar iyi değildir, ancak gerçek bir sistemle çalışmak çok daha ucuzdur.


1
donanım tabanlı hata ayıklayıcı kartlarını incelemek isteyebilirsiniz
Steven A. Lowe

@Steven teşekkürler; maalesef üzerinde çalıştığım bazı sistemler uygun donanım desteğine sahipken, diğerleri desteklemiyor. Genel olarak bir mantık analizörü seçeneğimiz olsa da, bu zaman açısından daha pahalı olur.
Luke Graham

Ben tam tersiyim. Bir hata ayıklayıcıyı gömülü sistemlerde çok daha sık kullanıyorum. Yine de zamanlamayı bozduğu konusunda hemfikirim. Bir hata ayıklayıcının döngü içine yerleştirilmesinden kaynaklanan değişiklikleri filtrelemek ve / veya en aza indirmek için oldukça fazla çaba harcanması gerekir.
Karl Bielefeldt

7

Sanırım deneyimli programcılar neredeyse sadece gerektiğinde hata ayıklayıcıları kullanıyorlar. Bir hatayı izlemek için kodun yürütülmesini takip etmekten daha iyi bir yol ...

Dünya Skeetlerinin hata yapmadığı ya da sadece her şeyi bildiği varsayımı altında mısınız? En önemsiz programlar hariç tümü, bazı durumlarda beklenmedik şekillerde davranır. Sorunların araştırılması gerektiği belirtiliyor. Yani seçimler, spektrumun bir ucunda print ifadeleri kullanmak ya da bakalım neler olduğunu incelemek, diğer taraftan ipotek göndermek ya da kod yürütülürken ve ortada neler olup bittiğini anlamak için ortada bakmaktır.

Belki de bunu düşünmenin daha iyi bir yolu, deneyimli programcıların hata ayıklayıcıyı ne zaman kullanacaklarını bilmeleridir. Yığın izine bakarak birkaç bağımlılığa sahip olan kodda, neyin yanlış olduğunu bulmak için muhtemelen yeterlidir. Ancak, kodunuzun diğer kodlarla çalıştığı karmaşık senaryolar vardır ve yazmadığınız şeylere bakmak için bir hata ayıklayıcıya ihtiyacınız vardır.


4
Araştırmaya çalıştığım şey tam olarak bu. Son derece deneyimli bir programcıyım ve asla kullanmıyorum.

5
@neil, belki de ihtiyacın yok. Emin olun, zaman gerçekten hata ayıklayıcı bir sorunun sonuna ulaşmak için en basit yolu olacak, gerçekte birini kullanarak olsun ya da olmasın ....
hvgotcodes

Ben de yazmadığım şeyleri okuyabilirim. Ve yapamıyorsam, bu kötü kod olduğu için faydalıdır. Diğer durumlarda hata ayıklayıcıyı kullanıyorum.
GolezTrol

Kullandığınız dil istisnaları destekliyorsa ve bunları + uygun şekilde bir günlük kaydı çerçevesi kullanıyorsanız (örn. Log4j veya bunun gibi bir şey) her zaman hatanızın satırını gösteren bir yığın izlemesi ile sonuçlanırsınız. Zamanın% 99'u, beklemediğiniz boş bir işaretçi istisnasıdır. Bir hata ayıklayıcı size başka ne söyleyecek? Şimdi, c'de programlama yaparken, bir hata ayıklayıcı olmadan bulamadığınız şeyler vardı (örn. Yığın bozulması). Ancak bu tür şeyler artık yüksek seviyeli dillerde gerçekleşmiyor.
Kevin

1
@kevin, doğru, ben hata ayıklayıcı bir sorunun altına almak için en doğal yolu olduğu bu ikisi arasında bir sınıf sorunları olduğunu düşünüyorum. Belki de bir nesneye konulan dinamik özellikleri grails gibi dinamik bir dil çerçevesinde görmek istiyorum. Belki de null olmadığını düşündüğüm bir şeyin tam olarak null hale getirildiğini görmek istiyorum (NPE, istisnanın nerede olduğunu, neyin null olduğunu değil). Belki de sadece stacktrace içinde değil, hangi kod kombinasyonunun bir istisnaya neden olduğunu görebilmem için hata ayıklayıcım istisnada duraklatmasını istiyorum.
hvgotcodes

4

Yapmıyorum ve 10 yılı aşkın süredir program yapıyorum. C / c ++ 'da programladığımda alırdım. Şimdi java'da program yapıyorum. Gerçek şu ki, doğru şekilde oturum açıyorsanız, çoğu yetenekli geliştirici için yeterli olan bir yığın izlemesi ile sonuçlanacaksınız. Ayrıca, (iyi) birim testleri ve fonksiyonel testler yazıyorsanız, tüm hata sınıflarını ortadan kaldırır.


Daha fazla açıklığa kavuşursa, bir hata ayıklayıcı kullanan bir çok java programcısı biliyorum. Çoğunlukla okul dışındalar.
Kevin

1
yığın izleri veri göstermez - bu bilgileri kendiniz eklemeniz gerekir - ancak daha sonra bunlar saf altındır.

1
Thorbjorn @: Bunlar olabilir aslında verilerini gösterir: Python'un bakınız cgitb örneğin, modül. (Bu addaki CGI çoğunlukla mantıklıdır, modülün orijinal amacı bir CGI çöktüğünde kullanılabilir yığın izleri sunmaktır.) Tabii ki, bazen o kadar çok veri alırsınız ki bu da yığına gitmek zorlaşır ilgi çerçevesi. cgitb.enable(format='text')Yine de seviyorum .
SamB

Gerçekten hata ayıklayıcıları kullanmıyorum ve C ++ kullanıyorum ..
Nikko

@SamB Kevin Java hakkında konuştu, bu yapamaz

3

Seyrek.

Yöntemleriniz aklınız tarafından derlenip çalıştırılacak kadar küçük / basit olmalı, birim testleri işlevselliği kapsamalıdır. Bir hata bulursanız, bir test yazın. Çalıştır, düzeltin.

Yalnızca ASP.NET çerçevesi gibi denenemez koddan beklenmedik davranışlar aldığında hata ayıklayıcıyı kullanma eğilimindedir.


3
Bu iplik bazı gerçek düşmanı noobs var ...

2
Bunu aşağıya oymak için bir sebep yok - haklı.
wadesworld

11
-1 çünkü bu iddia Vegas'ta para kazanmanın yolunun sadece her eli kazanmak olduğunu söylemek gibidir. Bu durumun gerçekliğini yansıtmaz ve tüm kodların basit olacağı iddiası sadece küçük sorunlarda mevcuttur. Ayrıca, "çalıştır, düzeltin" iddiası, düzeltmeye nasıl devam ettiğinizi tamamen görmezden gelir. Kaymasına izin verecektim ama sonra aynı fikirde olmayanların onu küçümsemeye değer kıldığını söylüyordum.
whatsisname

2
-1: "Yöntemlerin derlenip zihnin tarafından çalıştırılabilecek kadar küçük / basit olmalı" gerçeğinden ayrılıyor. Bu, 20 satırdan uzun bir fonksiyonun çok uzun olduğunu söylemek gibidir. Saçmalık.
John Dibling

3

Smalltalk'ta neredeyse tamamen hata ayıklayıcıda gelişiyorum :

  1. Başarısız olacağını bildiğim bir test yazın.
  2. Testi çalıştırın. Başarısız olduğunda, hata ayıklayıcı açılır.
  3. Hata ayıklayıcıda, testi geçmek için gerekli kodu yazın.
  4. Yürütmeyi sürdür.
  5. Yeşil ışık alırsam, yeni bir başarısızlık testi ile 1. adıma gidin. Aksi takdirde, hata ayıklayıcıda neyi yanlış yaptığımı öğrenin ve düzeltin.

3

Kimin umrunda? Bilmek istediğim bir hata ayıklayıcı kullanmak uzun vadede daha iyi bir programcı olmamı engelleyecek mi? Belki de birçok deneyimli geliştirici başladığında hata ayıklayıcılar daha düşük kaliteye sahipti ve bu yüzden bir saygınlıktı. Daha derin bir kavrayışı engelleyen bir koltuk değneği mi?

Muhtemelen geri kalanımızdan daha iyi olan bazı programcılar bir hata ayıklayıcıya ihtiyaç duydular ve bir tane oluşturdular. Bunun bir sonucu olarak daha üretken olduklarından eminim. Motivasyonun daha az ölümlülerin kod yazmasını sağlamak olduğundan şüphe ediyorum.


2

Gerektiğinde bir hata ayıklayıcı kullanıyorum. Bu günlük değil, ama bazen gerçekleşir. Tam olarak ne olduğunu görmek için bazen kodun içinden geçmek daha iyidir.

Hata ayıklayıcıları daha az kullandığımı itiraf etmeliyim. Delphi'de 10 yılı aşkın bir süredir gelişiyorum. Ayrıca PL / SQL'de saklı yordamlar yazıyorum. Birkaç aydan beri ben de PHP geliştiricisiyim.

Yıllar önce yazılmış bir gizli kod parçası bulursam ve bu kodu değiştirmem gerekiyorsa, hata ayıklayıcıyı her iki durumda da kullanıyorum. Bazen, kodu okumak zorsa, bir programın tam olarak nasıl çalıştığını bulmaya yardımcı olur. Çok az gerekli olan PHP'de, ancak olay tabanlı Delphi'de, bazen karmaşık bir çerçeveye sahip olduğunuzda yardımcı olur.

Ama dediğin gibi, hata ayıklayıcıyı kullanmak bir istisnadır. Çoğu sorun sadece kodu okuyarak ve sizin (veya bir başkasının) yaptığınız hataları düzelterek çözülür.

Ancak bu, koddan geçmek için geçerlidir. Bir istisna oluştuğunda sık sık çağrı yığını kullanıyorum ve bazen bir değişkeni incelemek için bir yere bir kesme noktası koydum. Ama neredeyse her zaman, yine de kapsamlı bir yeniden düzenleme gerektiren bir kod parçasında.


2

Bazen hiçbir hata ayıklayıcı olmadan kodlama, ancak sadece zoruyla zorlandığı zaman, yani. 8051 veya Z80'de eski gömülü gunge.

IMHO, herhangi bir karmaşık işte bir hata ayıklayıcı ve oturum açmanız gerekir. Bir kere diğerinin yerine geçmez. Örneğin, kodun yapabileceği tek şey donanımla etkileşim kurmak ve bir semafor ayarlamaksa, uygulama bir sürücüde yer alıyorsa bir günlük sistemi yardımcı olamaz.

Bir hata ayıklayıcı, uygulamaların yazdığınız şekle göre iyi çalıştığı bir sistem hatasıyla yardımcı olamaz, ancak bazı aralıklı iletişim protokolü hatası nedeniyle sistem hala çalışmaz.

Yani, aptal, apaçık hataları ve donanım cockups kaldırmak için hata ayıklayıcı gerekir. Aralıklı sistem entegrasyonu hatalarını yakalamak için iyi bir kayıt tutmaya ihtiyacım var.

İkisine de sahip olmalıyım - alabileceğim tüm yardıma ihtiyacım var!


2
z80 hata ayıklayıcılar için yeterince büyük. CP / M'nin ZSID'si vardı.

1

Hata ayıklayıcıyı yalnızca bu adımlar başarısız olduğunda kullanırım:

  1. Hatayı tekrarlanabilir hale getirin. Düşünün. Bu genellikle ihtiyaç duyulan her şeydir.
  2. Yığın izini ve günlükleri kontrol edin.
  3. Sorunlu kodun etrafına daha fazla günlük ekleyin.

Bu adımlar tüm vakaların% 95'ini halleder. Bu, nadiren bir hata ayıklayıcı kullandığım anlamına gelir ve bunu yaptığımda bana çok fazla bilgi verme eğilimi gösterir ve ilgisiz ayrıntılarda bataklığa uğrarım. Bu özellikle çok iş parçacıklı, gerçek zamanlı bir sistem üzerinde çalışırken geçerlidir.

Bu yüzden, mantıklı bir şekilde yerleştirilmiş günlük ifadeleri uzun bir yol kat ediyor.


1

Çok deneyimli programcıların çok eski programcılar ile aynı olması ve hata ayıklayıcıların her zaman mevcut olmadığı ve bazen çok iyi olmadığı zaman programlamayı öğrendikleri ve alışkanlıklarını oluşturdukları olabilir mi?

Printf hata ayıklamada gerçekten iyi olursanız (ve seksenlerde geri dönersek, gerçekten iyi olmaktan başka seçeneğimiz yoktu), belki bir hata ayıklayıcı bu kadar eklemez.


0

Bu kişisel seçim meselesi.

Dürüst olmak gerekirse, hata ayıklayıcıların, programınızın yürütülmesinin herhangi bir adımında koçunuzda ne olduğunu bilmenin çok yardımcı olduğu bazı durumlarda yararlı olduğunu düşünüyorum.

Bir hata ayıklayıcının birincil yardımcı programı, program kendisini durduracak şekilde tasarlanmadan durdurmaktır: bu özellik oldukça önemlidir.

Bu 2 özellik dışında bir hata ayıklayıcının gerçekten gerekli olduğunu düşünmüyorum; Yaptığınız herhangi bir karmaşık program bir çeşit "ayrıntılı" moda sahip olmalıdır, yani printf veya std :: cout ile yaptığı her şeyi, yaptığı seçimleri ve diğer birçok parametreyi anlatmalıdır.

Bir program yaptığınızı ve kullanıcının onu kullanırken bir problemi olduğunu hayal edin: Kullanılmak üzere tasarlandığı şekilde kullanıp kullanmadığını veya şikayet ettiği şey bir hata olabilir mi?

Hata ayıklayıcılar aracınızın elektrikli direksiyonuna benzer: bir tane daha rahattır, ancak sürücünüzü daha iyi yapmaz.

Programlama, tasarım ve mantıkla ilgilidir, araçların şeyleri izlemenize yardımcı olma yolu sizi daha iyi bir programcı yapmaz.

Ayrıca hata ayıklayıcılar, derlenmiş diller için yararlıdır, yorumlanmış diller için çok daha azdır.


2
Derlenmiş ve yorumlanmışın bununla ne ilgisi olduğunu anlamıyorum.
Michael Burr

iyi soru: ben de değil.
jokoon
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.