作者allstarschh (allstars)
看板PLT
标题Re: [问题]如何去get C variable的scope ?
时间Thu Jun 26 13:47:31 2008
※ 引述《godfat (godfat 真常)》之铭言:
: ※ 引述《allstarschh (allstars)》之铭言:
: : 这里面.......好像就没有scope的information???
: : 或者是由上面的某个memory address来知道scope information??
: gdb 我没用过,不过既然是 lexical scoping,
: 那麽 compile time 即可确定 name resolution,
: runtime 完全用不到这个资讯,当然就会丢弃了
: : 不过在maint print symbols
: : 可以看到有Blockvector 的东西
: : 而这block number 的index
: : 就跟我说的scope number 一样
: : 由这个Blockvector 就可以来作variable的binding了
: 我查了一下 maint print symbols, 好像是 gdb 的功能?
: 也就是说,如果你用 gcc 开 debug 模式,可能抓得到这个资讯吧?
: 不过这理所当然不是标准 c 就是了
: 你是想做什麽东西?为什麽需要这个资讯?
: 也许必须用一些间接方式才行,例如如果是 c++ 的话,
: 把你的 get_scope_number_and_print(); 改成某个 scope guard 之类的
感谢godfat大大的回应
其实最主要 我只是想知道scope number的资讯
後来发现gdb 中可以显示出这个information 也就是 Blockvector
像要在runtime知道的话
前提要像godfat大说的 要开debug option
要不然symtab是会被移掉的
不过像debug information 都会用dwarf 储存
我发现有libdwarf 这东西
看能不能在runtime 时拿到 debug information的东西就是了
另外第一次听到有scope guard这东西 待会来看看..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.22.63.250