2、注銷并重新登錄,使用命令行敲入python可顯示出python的版本信息
3、使用ctrl+b 如果仍然未出現編譯信息,要查看ctrl+· 是否有錯誤信息,將錯誤的插件remove掉
我的機器配置還是不錯的3.0的雙核intel 2G的內存 GF7600 gs 的顯卡。mmorpg中同屏100人以上是很平常的事情,4幀可真的是沒法玩。
(你對事情的看法,是不是也反映出你內心真正的態度?)
2、晚飯后,母親和女兒一塊兒洗碗盤,父親和兒子在客廳看電視。突然,廚房里傳來打破盤子的響聲,然后一片沉寂。是兒子望著他父親,說道:「一定是媽媽打破的。」「你怎么知道?」「她沒有罵人。」
(我們習慣以不同的標準來看人看己,以致往往是責人以嚴,待己以寬。)
3、有兩個臺灣觀光團到日本伊豆半島旅游,路況很壞,到處都是坑洞。其中一位導游連聲抱歉,說路面簡直像麻子一樣。而另一個導游卻詩意盎然地對游客說:諸位先生女士,我們現在走的這條道路,正是赫赫有名的伊豆迷人酒窩大道。」
(雖是同樣的情況,然而不同的意念,就會產生不同的態度。思想是何等奇妙的事,如何去想,決定權在你。)
4、同樣是小學三年級的學生,在作文中說他們將來的志愿是當小丑。中國的老師斥之為:「胸無大志,孺子不可教也!」外國的老師則會說:「愿你把歡笑帶給全世界!」
(身為長輩的我們,不但容易要求多于鼓勵,更狹窄的界定了成功的定義。)
5、在故宮博物院中,有一個太太不耐煩地對她先生說:「我說你為甚么走得這么慢。原來你老是停下來看這些東西。」
(有人只知道在人生的道路上狂奔,結果失去了觀看兩旁美麗花朵的機會。)
6、妻子正在廚房炒菜。丈夫在她旁邊一直嘮叨不停:慢些。小心!火太大了。趕快把魚翻過來。快鏟起來,油放太多了!把豆腐整平一下!「哎厎」妻子脫口而出,「我懂得怎樣炒菜。」「你當然懂,太太,」丈夫平靜地答道:「我只是要讓你知道,我在開車時,你在旁邊喋喋不休,我的感覺如何。」
(學會體諒他人并不困難,只要你愿意認真地站在對方的角度和立場看問題。)
7、理由充份:一輛載滿乘客的公共汽車沿著下坡路快速前進著,有一個人後面緊緊地追趕著這輛車子。一個乘客從車窗中伸出頭來對追車子的人說:“老兄!算啦,你追不上的!”“我必須追上它,”這人氣喘吁吁地說:“我是這輛車的司機!”
(有些人必須非常認真努力,因為不這樣的話,後果就十分悲慘了!然而也正因為必須全力以赴,潛在的本能和不為人知的特質終將充份展現出來。)
8、原來如此-甲:「新搬來的鄰居好可惡,昨天晚上三更半夜、夜深人靜之時跑來猛按我家的門鈴。」乙:「的確可惡!你有沒有馬上報警?」甲:「沒有。我當他們是瘋子,繼續吹我的小喇叭。」
(事出必有因,如果能先看到自己的不是,答案就會不一樣在你面對沖突和爭執時,先想一想是否心中有虧,或許很快就能釋懷了。)
9、誤會-某日,張三在山間小路開車,正當他悠哉地欣賞美麗風景時,突然迎面開來一輛貨車,而且滿囗黑牙的司機還搖下窗戶對他大罵一聲:“豬!”張三越想越納悶,也越想越氣,於是他也搖下車窗回頭大罵:“你才是豬!”才剛罵完,他便迎頭撞上一群過馬路的豬。
(不要錯誤的詮釋別人的好意,那只會讓自己吃虧,并且使別人受辱。在不明所以之前,先學會按捺情緒,耐心觀察,以免事後生發悔意。)
10、後生可畏-小男孩問爸爸:“是不是做父親的總比做兒子的知道得多?”爸爸回答:“當然啦!”小男孩問:“電燈是誰發明的?”爸爸:“是愛迪生。”小男孩又問:“那愛迪生的爸爸怎麼沒有發明電燈?”
(很奇怪,喜歡倚老賣老的人,特別容易栽跟斗。權威往往只是一個經不起考驗的空殼子,尤其在現今這個多元開放的時代。)
11、不必緊張-小明洗澡時不小心吞下一小塊肥皂,他的媽媽慌慌張張地打電話向家庭醫生求助。醫生說:“我現在還有幾個病人在,可能要半小時後才能趕過去。”小明媽媽說:“在你來之前,我該做甚麼?”醫生說:“給小明喝一杯白開水,然後用力跳一跳,你就可以讓小明用嘴巴吹泡泡消磨時間了。”
(take it easy,放輕松放輕松些,生活何必太緊張?事情既然已經發生了,何不坦然自在的面對。擔心不如寬心,窮緊張不如窮開心。)
12、鑰匙-一把堅實的大鎖掛在大門上,一根鐵桿費了九牛二虎之力,還是無法將它撬開。鑰匙來了,他瘦小的身子鉆進鎖孔,只輕輕一轉,大鎖就“啪”地一聲打開了。鐵桿奇怪地問:“為什麼我費了那麼大力氣也打不開,而你卻輕而易舉地就把它打開了呢?”鑰匙說:“因為我最了解他的心。”
(每個人的心,都像上了鎖的大門,任你再粗的鐵棒也撬不開。唯有關懷,才能把自己變成一只細膩的鑰匙,進入別人的心中,了解別人。)
計算當前光標的位置
用API ImmSetCompositionWindow指定IME 窗口到當前光標位置
在WM_KEYDOWN消息中處理
以下是代碼:
------------------------------------------------------------------------------------------------
























Dump
調用堆棧的原理以及異常信息的反饋
動機:
在游戲開發過程中,我們利用
QA
部門來做產品的質量保證,盡可能將絕大部分錯誤消化在內部,保證游戲的版本質量,但是
QA
部門畢竟有他的局限性,盡管經過嚴格的測試也很難保證將所有的問題一網打盡.
通過在
Log
中轉儲的錯誤信息,我們可以進一步找出問題,但是
Log
文件產生在終端,我們拿到的也僅僅是公司內部測試部門產生的
Log
文件,顯然公司內部得到的信息是很有限的,如果能從玩家那里拿到異常信息,我們才能最快的去解決問題,盡可能在錯誤產生重大影響之前將其解決,所以我們有必要從被動的獲取異常信息,轉為主動去獲取.
可行性
:
在錯誤發生時
Dump
調用堆棧,可以讓我們知道錯誤發生的位置,這比已往普通的
LOG
更加有效的多.我們可以將出錯的堆棧地址反饋回來.這一切在終端出現異常的時候自動進行.
Windows
操作系統提供的
SEH
結構化異常機制可能讓我們在程序崩潰的瞬間處理這些事情.
效率問題
:
SEH
是
windows
的異常機制,除非在編譯時候特別指定不使用,否則總有默認的
SEH
處理機制,
kernel32.dll
中有默認的
SEH
處理接口,當我們需要自己處理異常的時候,我們的處理點會掛接在異常處理鏈的最前端,這種鏈類似
Hook
的鏈.鏈的頭部放在
fs[0]
的位置.也就是說效率的問題是可以不必考慮,
具體實現
:
通過閱讀反匯編代碼可以了解函數調用過程中堆棧的結構
:
1
函數調用時
CALL
將下一行指令地址壓入堆棧
2
函數運行第一行會將
EBP
壓入堆棧
3
保存當前堆棧地址到
EBP (mov ebp,esp)
再遇到
call
時從第一步執行,所以每次第二步壓入堆棧的都是上一層函數調用的
ESP
地址,而這個地址
+4
字節偏移則是當前調用函數返回后的下一條指令,也就是上一層函數的地址,所以我們只要知道當前函數的
EBP
值
(
也就是當前函數的棧頂
)
就能夠遍歷得到所有調用堆棧層次.

我們將windows SEH 結構化異常引入后,可以在異常發生的時候得到當前的EBP值,從而通過這個值得到整個調用堆棧的地址.
在發布工程的時候,我們只需要生成map文件,就可以通過這個地址得到崩潰位置.使用HTTP GET 或POST方式可以將我們所需要的崩潰信息提交到我們指定的網站.這種方式只是通過URL參數來提交數據,只需要使用API InternetOpenUrl就可以很方便的將信息提交.此外如果不使用HTTP方式,我們也可以在這個時候創建新的socket 對指定的服務器進行連接來傳輸數據.



static TCHAR action[]=_T("datecomit.aspx");//預提交的頁面
static TCHAR server[]=_T("192.168.9.119");//提交的server地址













此后我們只需要定期觀察所提交的內容,便可以立即得知是否有異常出現.根據同一異常出現的幾率可以得知是否是致命的錯誤,是否需要緊急更新.
成員函數的調用是編譯器內部使用的 __thiscall 即需要this指針,
所以我們調用成員函數必須滿足的條件是
1 需要this指針,
2 成員函數有固定的函數地址
先看條件 1 ?
this指針是在函數調用前用ECX寄存器傳入的,
所以我們只需要提前講this指針賦值給ECX即可
條件2
成員函數是有固定的地址的,也就是說我們可以直接調用,不過大多數情況下因為要訪問成員變量,所以如果沒有this指針,會在訪問時產生異常.對于不需要this指針的成員函數可以正常調用.
如類 CTest


















這兩個條件都可以滿足,所以代碼如下:





















IRQ編號
設備名稱
用途
IRQ0
Time
電腦系統計時器
IRQ1
KeyBoard
鍵盤
IRQ2
Redirect IRQ9
與IRQ9相接,MPU-401 MDI使用該IRQ
IRQ3
COM2
串口設備
IRQ4
COM1
串口設備
IRQ5
LPT2
建議聲卡使用該IRQ
IRQ6
FDD
軟驅傳輸控制用
IRQ7
LPT1
打印機傳輸控制用
IRQ8
CMOS Alert
即時時鐘
IRQ9
Redirect IRQ2
與IRQ2相接;可設定給其它硬件使用
IRQ10
Reversed
建議保留給網卡使用該IRQ
IRQ11
Reversed
建議保留給AGP顯卡使用
IRQ12
PS/2Mouse
接PS/2鼠標,若無也可設定給其他硬件使用
IRQ13
FPU
協處理器用,例如FPU(浮點運算器)
IRQ14
Primary IDE
主硬盤傳輸控制用
IRQ15
Secondary Ide
從硬盤傳輸控制用
v0.1 2006-6-1(兒童節)
1.生成符號信息
更改Relase版的設置(2處):
一、Project Setting ->C/C++
Debug info:
選擇Program Database
二、Project Setting ->Link
選中Generate debug info
重新編譯
2.安裝Windbg
下載安裝最新的Windbg
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
3.設定環境變量
對于user32.dll等系統文件,Windbg可以自動從微軟網站下載所需的符號信息.我們只需設定_NT_SYMBOL_PATH
這個環境變量告訴Winddbg.方法如下:
我的電腦>右鍵菜單>屬性>高級選項卡>環境變量>系統變量>新建
變量名: _NT_SYMBOL_PATH
? ? 變量值:SRV*F:\websymbols* http://msdl.microsoft.com/download/symbols
解釋一下: F:\websymbols用來存儲系統符號.你可以指定其他的路徑.Windbg會自動創建該文件夾
4.設定符號路徑
新建一個文件夾,譬如C:\MyAppSymbols
將第一步中生成的Release目錄下<youapp>.pdb文件拷貝到該文件夾,該pdb文件包含了調試所需的符號信息.
打開Windbg,選擇File>Symbol file path>將C:\MyAppSymbols路徑添加進去
5.調試程序
選擇 File > Open Executable 然后選擇你需要調試的Exe文件,就可以調試了,其他操作和VC6差不多.