Sürüm veya hata ayıklama sürümleri olup olmadığını anlamak için yürütülebilir ve dinamik kitaplıklar gibi ikili dosyaları incelemek için basit bir komut satırı yardımcı programı var mı? * Nix veya Windows'da böyle bir şey var mı?
Sürüm veya hata ayıklama sürümleri olup olmadığını anlamak için yürütülebilir ve dinamik kitaplıklar gibi ikili dosyaları incelemek için basit bir komut satırı yardımcı programı var mı? * Nix veya Windows'da böyle bir şey var mı?
C ++ için Linux, yapabilirsin:
objdump --source yourbin |grep printf
Printf'i, yaptığınız işlev çağrısı ile değiştirin. Hata ayıklanıyorsa, yaptığınız tüm gerçek kaynak kodu çağrısını görüntüler. Serbest bırakılırsa, sembol sembolünden kurulu sembolü gösterir.
C ++ için , Windows, depends.exe'yi kullanabilir ve MSVCRT'ye (release) veya MSVCRTD'ye (debug) bağlı olup olmadığına bakın.
Linux üzerinde dinamik kütüphaneler için bile "dosya" komutunu kullanabilirsiniz. Tüm hata ayıklama sembollerinden sıyrılan "soyuldu" yazıyorsa. "Soyulmamış" diyorsa, bunun tam tersidir.
Unix için: ELF çalıştırılabilir ile kullanmak mümkün olabilir objdump veya mil Yürütülebilir dosya için sembol tablolarına bakmak için (bu durumun, soyulmadığında çok daha iyi çalışacağını unutmayın). Belirli sembollerin varlığı veya yokluğu bir hata ayıklama veya yayın oluşturma belirtisi gösterme eğiliminde olacaktır. (Bu, büyük olasılıkla, hangi kütüphaneleri kullandığınıza bağlıdır, vb. Ortak olanları bulmak için biraz kazı yapmak zorunda olmalısınız, yorumlarda aramayla ilgili önerilerde bulunmaktan çekinmeyin; Cevap.)
Pencereler için: dependencywalker önerileri iyidir. Komut satırı eşdeğerleri için dumpbin Çoğu Visual Studio yüklemesinde ve * nix'de objdump'a biraz denktir. Ayrıca, bir nm veya objdump'ı da bulabilirsiniz. bazı windows exe dosyalarında çalışacak msys veya cygwin.
Windows için Bağımlılık Walker exe yüklerinin (ve bağımlılıklarının) her dll'si için isteğe bağlı cmd-line çıktı listesi vardır. Bunu grep ile çalıştırın ve bir d ile msvcrt-dll popups olup olmadığını görün.
Bu sadece dinamik olarak bağlantılıysa çalışır. Aksi takdirde daha zor olabilir.
Hata ayıklama / yayınlamada farklı olan belirli işlevler için belki de grep olabilirsiniz. Eğer bu dizeler yürütülebilir dosyada görülebilir.
Uygulamalarınız çalışma zamanını hiç kullanmazsa, oldukça zor olur.
Devam edecek fazla bir şey yok. Reflektörde bir montaj açarsanız, Montaj Niteliğine bakabilirsiniz:
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.EnableEditAndContinue | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.Default)]
Ama görünüşe göre bu, serbest bırakma moduna da eklendi.
Eğer kendi meclisiniz çözümdense, bazı önişlemci direktiflerini kullanmaktır.
#ifdef DEBUG
[MyAttribute("foo")]
#endif
düzenleme: Üzgünüm, .NET'i kabul ettim. Çekicem gider.
Çoğu zaman, hem yürütülebilir dosyaların hem de kitaplıkların hata ayıklama sürümleri, çalışma zamanının hata ayıklama sürümüyle ilişkilendirilir. Windows üzerinde, bazıları takip eden hata ayıklama / yayın sürümleri için bir ad düzeni vardır. Bir kitaplığın hata ayıklama sürümünün adı d ile bitmelidir. Bağımlılık Walker gibi bir araç kullanabilirsiniz.http://www.dependencywalker.comUygulamanızın veya kitaplığınızın hangi kitaplıklara bağlı olduğunu görmek için. Çalışma zamanı kitaplıklarının hata ayıklama sürümlerini bulursanız, yürütülebilir dosyanızın veya kitaplığınızın hata ayıklama modunda büyük bir şansı vardır.
Ancak bu sadece çalışırsa
Filever.exe'yi kullanabilirsiniz.
filever.exe <my binary file>
--a-- W32i APP - 1.0.0.0 shp 25,600 11-03-2013 <my file>
Filever almak için windows xp için destek araçlarını indirebilirsiniz.
Windows 7 veya daha yukarısına taşındıysanız (çoğu pencere kullanıcısı gibi), indirebilir, winzip ile açabilirsiniz.
Daha sonra, support.cab'den filever ayıklayın.
Windows 7 için gayet iyi çalışıyor.
Hangi sürümü olduğunu öğrenmek için depends.exe'yi kullanın. Dosyayı açıp yürüdüğünüzde, gerekli olan dosyayı gösterecektir. System32 dosyalarının listesini görerek, hata ayıklama veya bırakma olup olmadığını görebilirsiniz.