1
私は最初のかわいいプリンタを書いていますが、何か問題があります。私のgdbは7.7です。かわいいプリンタヘルプ:オブジェクトに属性がありません
ここでは、デバッグに私が好きなC++コードです:ここでは
enum Country
{
CHINA,
USA
};
class Foo
{
public:
Foo(int _v, enum Country c) {v = _v; m_country = c;}
~Foo() { v = -1; }
int v;
enum Country m_country;
};
int main()
{
Foo f(10, CHINA);
return 0;
}
は私のプリンタである:
import gdb
class FooPrinter:
def __init__(self, val):
self.v = val
def to_string(self):
# because v is integer, a simpler way is:
# return self.v['v']
v = "v=" + str(self.v['v'])
f = self.m_country['m_country']
if (f == 0):
c = "CHINA"
elif (f == 1):
c = "USA"
else:
c = "unknown"
c = "c=" + c
ret = v + '\n' + c
return ret
def lookup_type (val):
if str(val.type) == 'Foo':
return FooPrinter(val)
return None
gdb.pretty_printers.append (lookup_type)
私はGDBでプリンタを実行すると、私はこのエラーを取得:
(gdb) source printer.py
(gdb) p f
Python Exception <class 'AttributeError'> 'FooPrinter' object has no attribute 'm_country':
は、
__init__
に国別の引数を追加する必要があると思いますが、もしそうなら、どのようにrコードのest?