DWScript için bir IDE yazıyorum ve hata ayıklayıcısını kullanarak kodun içine adım atıyorum. Şimdi 'yerel değişkenler' (yani kapsamdakiler) görüntüsünü eklemek istiyorum. Birisi bana bunu yapma araçlarına işaret edebilir mi? Tüm sembollerin bir listesini alabilirim, ancak şu anki kapsam kısmının nasıl ele alınacağını anlamıyorum. Teşekkürler.DWScript ve hata ayıklayıcısını kullanarak bir 'yerel değişkenler' görünümü nasıl oluşturulur
cevap
Cast IdwsProgramExecution TdwsProgramExecutioniçin, sen özelliği bir "CurrentProg" erişebileceksiniz, (ana iseniz) bir TdwsMainProgram ya bir TdwsProgram veya Bir TdwsProsedürü (eğer bir proc/func/yöntemindeyseniz). Bu yerel simgeler listeler, en doğrudan kapsamı olan bir Tablo özelliğine sahip olacak.Bu Tablo, üst kapsamları (hiyerarşik olarak, kaynak kodu kapsamı açısından) gösteren bir veya daha fazla Ebeveynleri olacaktır.
bir TdwsProcedure yılında, aynı zamanda (doğrudan yerel kapsam geri kalanından parametrelerini izole etmek istediğinizde yararlı) parametrelerinin bir tablo var edecek olan kendi FuncSymbol tesiste bakmak isteyebilirsiniz Eğer
Bu soruyu okuyan diğerleri için, bir sembolün değerini almakla ilgili bazı ek bilgileri göstereceğim. Sembol, yukarıda Eric tarafından tarif edildiği gibi bulunur, ancak sembolün gerçek değerini nasıl elde edeceğinizi öğrenmek zordur. Aşağıdaki kod, her çağrıldığında bir TMemo (memLocalVariables) yerel değişkenlerle dolduran bir yordamdır. Değişken değerin düzgün biçimlendirilmesi ve arama parametrelerine erişim gibi bazı özellikler eksik. Bunu hata ayıklayıcısından 'dsDebugSuspended' durumundan arıyorum. Daha az sezgisel bit, yığın üzerindeki sembol verilerine ve yığın taban işaretçisinin kullanımına erişimdir. Derleyicinin nasıl çalıştığını öğrenmek için harika bir yol! Ama, belki de bulamadığım bir yerde bir yardımcı fonksiyon var mı? Eric
procedure DrawLocalVariables;
var
ProgramExecution : TdwsProgramExecution;
I : integer;
Sym : TSymbol;
V : variant;
Adr : integer;
SymbolTable : TSymbolTable;
begin
memLocalVariables.Lines.Clear;
ProgramExecution := TdwsProgramExecution(dwsDebugger1.Execution);
SymbolTable := ProgramExecution.CurrentProg.Table;
For I := 0 to SymbolTable.Count-1 do
begin
Sym := SymbolTable[I];
if Sym is TDataSymbol then
begin
Adr := TDataSymbol(Sym).StackAddr + ProgramExecution.Stack.BasePointer;
ProgramExecution.Stack.ReadValue(Adr, V);
memLocalVariables.Lines.Add(Format('%s = %s', [ Sym.Name, VarToStr(V) ]));
end;
end;
end;
TdwsCompiler.Evaluate değişkenini veya yerel değişkenleri kullanarak bir ifadeyi değerlendirmek için kullanabilirsiniz (hata ayıklayıcının gözlemcisi bunu kullanır). Doğrudan yığın erişimi en etkili yoldur, ancak eğer sadece değişkenin değerini istiyorsanız, ancak Değerlendirmek bir sınıf değişkeninin ClassName'ini daha kolay bir şekilde almasına izin verir. –
İyi nokta Eric, teşekkürler, bunu düşünmezdim –
- 1. Yerel değişkenler
- 2. dwscript kullanarak CreateOleObject işlevini çağırma?
- 3. WPF'yi kullanarak yerel görünümü nasıl görebilirim?
- 4. Dancer2 uygulamasına bir hata ayıklayıcısını nasıl ekleyebilirim?
- 5. Yerel değişkenler
- 6. Bir sınıf örneğini DWScript
- 7. MySQL yerel değişkenler
- 8. Yerel Değişkenler Django Hata E-postaları İçerir
- 9. SPSS: Sıralı değişkenler nasıl oluşturulur
- 10. Yerel Facebook iOS uygulamasında tümleşik tarayıcı görünümünde hata ayıklama görünümü
- 11. Yerel görünümü görüntüleyin Eclipse
- 12. Postacıda "yerel" değişkenler nelerdir?
- 13. NodeJS hata ayıklayıcısını bir Vagrant kutusuna nasıl tünelleyebilirim?
- 14. Rails işlev testinde hata ayıklayıcısını nasıl çağırırım?
- 15. Döngüler iç döngüleri ve yerel değişkenler
- 16. Visual Studio hata ayıklayıcısını derlemeye mecbur nasıl?
- 17. Yerel JS'yi kullanarak bir komut dosyasının tam kopyası nasıl oluşturulur?
- 18. Çoklu öge, lambda ve yerel değişkenler
- 19. AndroidStudio'da C++ hata ayıklayıcısını devre dışı bırak
- 20. powershell, hata durumunda hata ayıklayıcısını başlat
- 21. Android'de raf görünümü nasıl oluşturulur?
- 22. Android'de özel bir web görünümü nasıl oluşturulur?
- 23. Özel Arama Görünümü nasıl oluşturulur?
- 24. emacs23 hata ayıklayıcısını çok sık gösterir
- 25. Dwscript web sunucusu
- 26. VS hata ayıklayıcısını eklemeden CLR istisnasından bir stacktrace alabilir miyim?
- 27. Yorumlar ve değişkenler kaybetmeden Rails yerel YAML dosyasını nasıl güncellerim?
- 28. Visual Studio: Bir üye değişkeni değiştirildiğinde hata ayıklayıcısını nasıl durdurabilirim?
- 29. Java'da dinamik değişkenler nasıl oluşturulur? Örneğin
- 30. iPhone hata ayıklama: değişkenler güncel değil mi?
Teşekkürler Eric, ilk kez çalıştı. –