SORU
1 Mayıs 2015, Cuma


Nasıl yerel değişken bilgi (adres ve türü) Delphi programından ya da derleyici tarafından oluşturulan hata ayıklama bilgi ayıklamak mı?

Amacım:

  • Delphi derlenmiş veya 64-bit 32 bir Windows programı içinde asılı bir iş parçacığı verilen, yürümek için yığın (yapılabilir)
  • Her iki yöntemde yerel değişkenler numaralandır girişleri, yığın ve değerleri verilmiştir. Yani, en azından, bul adres ve türü (integer32/64/imzalı/imzasız, string, şamandıra, kayıt, sınıf...) birlikte kullanılabilecek bulmak için değer.

İlk gayet iyi ve bu soru hakkında ikinci. Yüksek bir düzeydenasıl yerel değişkenler verilen numaralandırma bir Delphi giriş yığını mı?


Düşük bir düzeyde, bu araştırıyorum nedir:

RTTI:değil listesi yöntemleri hakkında bilgiler bu tür yapar. Bu aslında, hiç bir şey gerçekçi bir seçenek olduğunu, ama burada liste zaten değildi.

Bilgi hata ayıklama:Hata ayıklama bilgisi bir hata ayıklama için üretilen yükleme oluşturun.

  • Ayrıntılı bir harita dosyası (metin biçimi dosyası! hatta dosyaları göster: Bir açık ve bir yerel değişken bilgi içermiyor. Temelde adresleri ve kaynak dosyayı satır numaraları listesi. Adres için dosya ve korelasyon hattına büyük, örneğin mavi daha ayrıntılı bilgi için oluk; büyük nokta
  • Uzaktan hata ayıklama bilgilerini (RSM dosyası) - no known information içeriğini veya biçimi.
  • TD32/TDS dosyaları:araştırma mevcut hattımı. Diğer pek çok bilgi arasında küresel ve yerel semboller içerirler.

Burada karşılaşmış olduğum sorunlar şunlardır:

  • TD32 dosya biçimi (ben bulamadım.) belgeler var yok
  • Onlar benim bilgi en Jedi JCL kodu (JclTD32.kullanarak gelir pas) ve ben bu kodu nasıl kullanılır veya yapıların yerel değişkenleri göstermek için yeterince geniş olup olmadığını. Evrensel simgeleri idare edecektir eminim, ama yerel hakkında çok emin değilim. Sabitler tanımlanan geniş bir çeşitlilik vardır ve biçim belgeleri olmadan, ne demek istediklerini okumak, sanırım sol. Ancak, bu sabitleri ve isimleri bir yerden gelmesi gerekir.
  • Source I can find using TDS info veya yerel semboller yük işlemez.

Eğer bu doğru bir yaklaşım ise, bu soruya 'orada TDS için belgeleri/TD32 dosya biçimi, ve herhangi bir kod örnekleri, yerel değişkenler yük var mı?' olur

Bir kod örneği için çok önemli değildir ama eğer çok az varsa bile çok yararlı olabilir.

CEVAP
5 Temmuz 2013, Cuma


Eğer herhangi bir yardım var mı bilmiyorum, ama Iain önerisi uygulamaya çalıştım ve kanallar kadar yakında durur mergeSources' bir türevi yaptı:

mergeSources' :: (MonadIO m, MonadBaseControl IO m)
              => [Source (ResourceT m) a] -- ^ The sources to merge.
              -> Int -- ^ The bound of the intermediate channel.
              -> ResourceT m (Source (ResourceT m) a)
mergeSources' sx bound = do
    c <- liftSTM $ newTBMChan bound
    mapM_ (\s -> resourceForkIO $
                    s $$ chanSink c writeTBMChan closeTBMChan) sx
    return $ sourceTBMChan c

(Bu basit ayrıca kullanılabilir here).

mergeSources (inanmayarak onları almak olabilir bir şey anlamadım) sürümü için bazı yorumlar:

  • ...TBMChan yerine ...TMChan kullanarak tehlikeli görünüyor. Eğer yazarlar okuyucu daha hızlı, yığın darbe olacak. Diyagramı bakarak bu kolay eğer TCP eş veri yeterince hızlı okumuyor diye bir şey olabilir gibi görünüyor. Kesinlikle ...TBMChan belki büyük ama sınırlı ile bağlı kullanmak istiyorum.
  • MonadSTM m kısıtlama gerekmez. Tüm STM malzeme ile IO içine sarılmış

    liftSTM = liftIO . atomically
    

    Belki de bu serverApp 13 *kullanırken size biraz yardımcı olacaktır.

  • Sadece kozmetik bir sorun buldum

    liftSTM newTMChan >>= liftA2 (>>) (fsrc sx) retn
    

    çok zor (->) r monad liftA2 kullanımı yüzünden okumak. Derim

    do
        c <- liftSTM newTMChan
        fsrc sx c
        retn c
    

    daha uzun, ama okuması çok daha kolay olurdu.

Belki de serverApp ile oynamak mümkün olacak nerede kendi kendine yeten bir proje oluşturmak misin?

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Darren Kitchen

    Darren Kitch

    3 EKİM 2011
  • Harvest: Greg Laurie

    Harvest: Gre

    6 HAZİRAN 2006
  • RobertDuskin

    RobertDuskin

    12 HAZİRAN 2008