İkilde bir çeşit faydalı bilgi vardır, çünkü GDB lambda işlevleri için daha kullanışlı isimler gösterebilir örn.
(gdb) bt
#0 <lambda()>::operator()(void) const (__closure=0x7fffffffd5ef) at ll.cc:3
#1 0x00000000004005e7 in main() at ll.cc:3
kapatma tipiyle örneği bir şablonun parçalanmış adı benzersiz bir ad örn içermektedir (belki hata ayıklama bilgisi sadece GDB <lambda()>::operator()
olarak tüm bu fonksiyonları gösterir gibi, kapalı tip söylüyor rağmen)
#3 0x0000000000400712 in func<main()::<lambda()> >(<lambda()>) (t=...) at l.cc:4
ama
belki diğer parçalanmış adlarında ihtiyaç duyulduğunda sadece kullanılan ad. GCC ile
de yazdırarak kapatma en operator()
adına yazdırabilirsiniz önceden tanımlanmış değişken __PRETTY_FUNCTION__
, ben aynı kapatılması için bir başka isim alabilirsiniz GDB Python API kullanarak main()::<lambda()>
gibi bir şey gösteren, Örneğin
(gdb) python import gdb; print gdb.block_for_pc(0x8048591).function.name
__lambda0::operator()() const
Bu en az üç farklı ad! Bu yüzden belki de backtrace_symbols_fd
'un lambda işlevleri için isimleri bulamadığı bir sınırlama olduğunu düşünüyorum.
Bunu görmek istediğiniz bağlamda (debugger? Toolchain?) Söz etmek yararlı olabilir. – MSalters
Evet, hangi derleyiciyi ve hata ayıklayıcısını kullanıyorsunuz? – LThode
@MSalters tamamlandı, teşekkürler –