(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 2:33 AM
1
[廢]
新知雜
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 2:34 AM
這幾天同事在改 code 改壞了,但壞的方式很荒謬,筆記一下
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 2:38 AM
Fri, Mar 4, 2022 2:39 AM
應該是那附近的 code 是蠻久以前寫的 or 其他考量
所以在處理 exception 的時候用的不是 c++ 的 try catch
而是微軟自己擴充的
__try
__except
__finally
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 2:39 AM
這次噴的是這個問題
error C2712: Cannot use __try in functions that require object unwinding
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 2:41 AM
Fri, Mar 4, 2022 2:41 AM
詳細的我也不清楚
但總之就是在使用 __try 的時候
__try 包起來的 code
(可能包含使用了 __try) 的那個 function 中
不可以有會用到 destructor 的 code
也就是說在這裡面基本上不可以創建 + 銷毀一個 class 的物件
(所以也不能用 string)
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 2:42 AM
解決方式大概有
1. 不要用 class
2. 把會有 class 的 code 再多包一層 function
3. 把 __try 往外丟之類的
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 2:43 AM
4. 這次沒用到,不過也可以改 compile 的設定: /EHa
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 8:21 AM
.
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 8:21 AM
其他零碎的新知 (zzz
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 8:21 AM
app 和 service 的差別:
app 跑在個別 user 的 account 底下
service 會跑在 system 底下
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 8:22 AM
BSOD 的時候可以收 mini dump, kernel dump or full dump
mini dump 只會有 trigger BSOD 的那條 thread 的資訊,有時候會不足以 debug
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 8:22 AM
在有 kernel dump / full dump 的情況下
下 !process 0 0 可以看到很多東西的資訊 (廢話
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 8:23 AM
如果出了問題只收了 mini dump,可以去收 System.evt 來看
如果是 memory 不夠之類的問題,會印 log 出來
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 8:24 AM
想看普通的 app (?) 有沒有 crash 的話可以看 System Info (or msinfo32) 來看系統有沒有噴 error
(σ゚∀゚)σ
@zkelly3
Fri, Mar 4, 2022 8:25 AM
前陣子微軟終於肯寫 Windbg 文件了
Getting Started with Windows Debugging - Windows dri...
載入新的回覆
新知雜
所以在處理 exception 的時候用的不是 c++ 的 try catch
而是微軟自己擴充的
__try
__except
__finally
error C2712: Cannot use __try in functions that require object unwinding
詳細的我也不清楚但總之就是在使用 __try 的時候
__try 包起來的 code
(可能包含使用了 __try) 的那個 function 中
不可以有會用到 destructor 的 code
也就是說在這裡面基本上不可以創建 + 銷毀一個 class 的物件
(所以也不能用 string)
1. 不要用 class
2. 把會有 class 的 code 再多包一層 function
3. 把 __try 往外丟之類的
app 跑在個別 user 的 account 底下
service 會跑在 system 底下
mini dump 只會有 trigger BSOD 的那條 thread 的資訊,有時候會不足以 debug
下 !process 0 0 可以看到很多東西的資訊 (廢話
如果是 memory 不夠之類的問題,會印 log 出來