본문 바로가기
Programming/Python

python 콜스택 추적

by bbolmin 2013. 10. 9.


[ 테스트 Class ]



class Test:
	def Parent(self, data):
		Parent_val1 = 'pval1'
		Parent_val2 = 'pval2'
		self.Child(data)
	def Child(self, data):
		Child_val1 = 'cval1'
		Child_val2 = 'cval2'
		exec data


tobj = Test()





sys._getframe(n) : n단계 전의 프레임을 얻음



[*] sys._getframe(n).f_code.co_name : n단계 전의 프레임에서 함수 이름을 얻을 수 있음


ex)





[*] sys._getframe(n).f_locals을 이용하여 해당 프레임의 지역 변수도 접근 가능.


ex)



결과

[0]locals : {'Child_val1': 'cval1', 'Child_val2': 'cval2', 'data': "print '['+str(i)+']locals : ' + str(sys._getframe(i).f_locals)", 'self': <__main__.Test instance at 0x01234D50>}

[0]name : <module>


[1]locals : {'Child_val1': 'cval1', 'Child_val2': 'cval2', 'data': "print '['+str(i)+']locals : ' + str(sys._getframe(i).f_locals)", 'self': <__main__.Test instance at 0x01234D50>}

[1]name : Child


[2]locals : {'self': <__main__.Test instance at 0x01234D50>, 'data': "print '['+str(i)+']locals : ' + str(sys._getframe(i).f_locals)", 'Parent_val2': 'pval2', 'Parent_val1': 'pval1'}

[2]name : Parent


[3]locals : {'__builtins__': <module '__builtin__' (built-in)>, '__package__': None, 'sys': <module 'sys' (built-in)>, 'i': 3, 'Test': <class __main__.Test at 0x0120CDC0>, '__name__': '__main__', '__doc__': None, 'tobj': <__main__.Test instance at 0x01234D50>}

[3]name : <module>




'Programming > Python' 카테고리의 다른 글

python HTML, XML 파싱 - BeautifulSoup  (0) 2013.11.21
python SOCKS Proxy 사용 - socksipy  (0) 2013.11.08
python socket관련 - socket, urllib2, httplib  (0) 2013.11.05
Python Editor  (0) 2013.10.31
파이썬 - 입력받기(input, raw_input)  (3) 2012.09.17