是否有任何平台无关的方式将程序创建的变量转储到屏幕上?说我写程序
#include <iostream>
void f(){
std::string interal_data = "hello world";
}
int main(){
f();
}
在没有向internal_data
添加std::cout/std::stream
的情况下,有没有办法让f()
出局?我想输出我的程序中的所有数据,这是非常大的,我不想去其他所有行并放置std::cout
。调试器如何做到这一点?
我正在寻找在c ++中执行此操作的方法
答案 0 :(得分:3)
嗯...“没有添加std::cout
/ std::stream
”是无稽之谈,如果你想输出一些东西,就去做吧。调试器使用魔法,即检查您的进程和内容,并为您没有的进程调试符号。
编辑:当然,这可能只适用于C ++,因为Python是一种有点解释的语言,所以你可以用它来实现。由于我对Python没有任何经验,我不能对此发表评论。 :)
答案 1 :(得分:0)
问题是关于python和c ++,但只改为c ++?
在Python中,您可以打印globals()
或locals()
上的所有内容,如果对象是没有数据表示的类实例,则只需打印{{1}里面的属性。即递归印刷每件东西。
伪代码:
__dict__
然后你做:
def show(obj):
if isinstance(obj, (int, float, ...default types...)):
print obj
if isinstance(obj, dict):
for i,j in obj.items()
print i, show(j)
else:
show(obj.__dict__)
您可能希望过滤更多案例,但这是基本算法。