今天收到一封來信:
“我的高級鏈路做了一部分了,而且所做的部分在做完之后已經及時保存。但是寫完文檔后關閉TAU G2的時候出現死機,我就強行關閉了TAU G2。以前也經常發生類似的情況,可是重新啟動TAU G2是可以打開原來的U2文件的。
可是這回,我再打開U2文件后出現了錯誤“Error: TNR0085: XML Parser: no element found (file ://D:\賊魔2\基站項目\LLC\LLC.u2, line 40981).”,和“Information: Session in ::[wpAu0I1UtXILmZZ6zELdUAvL]: TMI0760: Failed to load file D:\賊魔2基站項目\LLC\LLC.”的情況,原來的東西打不開了,而由于我的疏忽沒有備份。因為我根本沒有想到會出現這種情況。
我高級鏈路已經做了相當多了,快完成任務了,而且老師催得又特別緊,我無法想象重新返工會是多么可怕的事情。附件已經給您一塊發來,不知道您能否把這個東西恢復出來。謝謝您了。我現在非常郁悶。”
這的確夠糟糕的。在此提醒大家一定要每天備份程序,最好使用CVS或SourceSafe工具進行程序管理。
下面介紹一下我是怎么修復這個文件的,當然完全的修復不可能,因為有一部分內容沒有存盤,已經徹底丟失了,但總歸希望能找回一些,不要徹底重做。.u2文件實際上是一種XML文件,使用UltraEdit打開就可以看出,大致是這樣的格式:
在XML中,大多數Tag都是成對出現的,比如<u2></u2>、<Class></Class>等。被破壞的文件沒有了后面的這些行,所以TAU G2打開時會報告錯誤。本來想在網上找一個自動修復XML的工具,不過還沒有找到。找到了一個小工具XmlShell,它可以檢查XML文件中是否存在著 Tag不封閉的情況。這個工具很小,不到1M,倒是可以幫助解決問題。首先把.u2文件改名為.xml文件,然后使用XmlShell打開,它會報告有一些Tag沒有封閉。將編輯光標移動到文件尾,輸入“</”。你每次輸入“</”,XmlShell都會幫助你自動封閉Tag,直到出現“</u2>”,所有Tag都封閉了,這時再用XmlShell檢查文檔,它報告這是一個合法的XML文件了。把文件存盤,然后再改回.u2。這時再使用TAU G2打開文件,TAU G2仍然會報告一些錯誤,但是這是在Model中已經可以看到一些東西了。至于能找回來多少,要看運氣。
類似的工具還有不少,如XML Spy或XmLBuddy。
這篇文章快要寫完的時候收到了回信:“我剛才看了文件,已經恢復了90%,就差2張圖和一些函數定義。我昨天做的東西也有一部分恢復出來了。估計再有半天就可以補齊。如果沒有您,我估計重新返工得1個月左右的時間。”很有成就感。