2017-08-17 88 views
5

我正在學習安全挑戰。其中一項挑戰要求我檢索已被銷燬並保存在內存中的數據,直到垃圾收集器啓動。我怎樣才能看到垃圾收集器中有什麼

我已經嘗試了很多東西。我想知道是否有可能從python控制檯轉儲進程內存。

此外,挑戰給了我們一個python控制檯,但有一個秒錶而不是「>>>」。他們怎麼能這樣做? 我只是有一個啓動python控制檯的ssh訪問。

謝謝

+1

'import gc; gc.get_objects()' –

+0

sys.ps1/sys.ps2控制標準Python REPL中的提示:https://docs.python.org/3/library/sys.html?highlight=sys#sys.ps1 – MatsLindh

+0

謝謝。我曾嘗試過,但禁止導入 – Bob5421

回答

0

你可以使用下面的代碼來看看什麼是垃圾。

import gc 

def dump_garbage(): 
    """ 
    show us what's the garbage about 
    """ 
    # force collection 
    print("\nGARBAGE:") 
    gc.collect() 

    print("\nGARBAGE OBJECTS:") 
    for x in gc.garbage: 
     s = str(x) 
     if len(s) > 80: s = s[:80] 
     print(type(x),"\n ", s) 

if __name__=="__main__": 
    import gc 
    gc.enable() 
    gc.set_debug(gc.DEBUG_LEAK) 

    # make a leak 
    l = [] 
    l.append(l) 
    del l 

    # show the dirt ;-) 
    dump_garbage() 
+0

來規避導入的禁止我不明白:如果您在打印之前收集內容,gc中會沒有任何內容? – Bob5421