de C++ ifadeleri değerlendiriyor. Örneğin, aşağıdaki kodla:Nasıl GDB Geçenlerde GDB bir program ayıklarken "karmaşık" ifadeleri değerlendirmek yeteneğine sahip olduğunu fark ettim ve o bunu nasıl merak ediyorum, zamanında
int main() {
std::vector<int> v = {1, 2, 3};
int k = 0;
std::cin >> k;
v.push_back(k);
return v.at(0);
}
Bana (k
girilen dinamik sonra doğru değeri yazdırır) print v.at(4);
gibi noktaları print v.at(2) == 3
yazabildiği programı g++ -g myprogram.cpp
ve GDB içinde hata ayıklama derlemek mümkün duyuyorum doğru olarak değerlendirir. Ben GDB bunu nasıl merak ediyorum
. This SO question, "bellekte derlenmiş" bir şey olduğunu ama daha fazla ayrıntı vermediğini ima ediyor, bu yüzden tüm bunları ya da başka bir şeyi yapmak için bir çeşit JIT kullanmasını mı merak ediyorum? Yazarken ve çalıştırırken kod satır içi derliyorlar mı? Hata ayıklama bağlamında C++'yi değerlendirmek için bir çerçeve var mı? Özünde, bu noktada yazım hatalarımdaki ifadeleri değerlendirmek için yazdığım bir hata ayıklayıcıda çoğaltmak istiyorum, bu yüzden GDB'nin bunu nasıl yaptığını merak ediyorum. Bana baskı v.at gibi şeyler yazabildiği
Ne tür bir cevap almayı umduğum belli değil. Gdb, hata ayıklama programı bağlamında C ve C++ ifadelerini, ikili içerisindeki hata ayıklama bilgilerinin yardımıyla ve ayrıca kullanılabilir olduğunda kaynak kodunun kullanımıyla analiz edebilir. Ama bunu zaten biliyordunuz ve detaylar bu mekan için çok uzun olacaktır. –
@JohnBollinger "Kaynağı kullanmam" gerekeceğini düşündüm, ama merak ettiğim şey ifadeleri nasıl değerlendiriyorlar. Yazarken ve çalıştırırken kod satır içi derliyorlar mı? Hata ayıklama bağlamında C++'yi değerlendirmek için bir çerçeve var mı? Özünde, bu noktada yazım hatalarımdaki ifadeleri değerlendirmek için yazdığım bir hata ayıklayıcıda çoğaltmak istiyorum, bu yüzden GDB'nin bunu nasıl yaptığını merak ediyorum. Teşekkürler! – llk
Sorunuz daha fazla C++ odaklı görünüyor. C etiketini kaldırmanızı tavsiye ederim. – tambre