[問題] callback function如何 try catch?

看板C_and_CPP (C/C++)作者 (Google)時間1年前 (2023/01/12 12:06), 編輯推噓6(6045)
留言51則, 7人參與, 1年前最新討論串1/1
目前程式中會使用到 callback 這個callback 來在別人api 但此api的來源碼要不到 目前發生一觸法callback 即直接掛掉 只能靠core dump看 是參數問題 有辦法用 try catch 避免程式直接掛點嗎 謝謝 ---- Sent from BePTT on my iPhone 12 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.162.40 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1673496419.A.6B2.html

01/12 12:26, 1年前 , 1F
不懂問題在哪裡,直接用 try catch 包住不行?
01/12 12:26, 1F

01/12 12:30, 1年前 , 2F
callback 的話,無法包住
01/12 12:30, 2F

01/12 12:32, 1年前 , 3F
callback 就一個func的定義,無法在定義外包一層try cat
01/12 12:32, 3F

01/12 12:32, 1年前 , 4F
ch,而此func一被觸法就掛了,根本連第一行都沒執行到,
01/12 12:32, 4F

01/12 12:32, 1年前 , 5F
參數就掛了
01/12 12:32, 5F

01/12 12:32, 1年前 , 6F
被呼叫的跟呼叫的都在別人那?
01/12 12:32, 6F

01/12 12:38, 1年前 , 7F
我這邊有掛載那隻api
01/12 12:38, 7F

01/12 12:39, 1年前 , 8F
事件一觸發就會跳進api裡面,api我們這邊有overwrite但掛
01/12 12:39, 8F

01/12 12:39, 1年前 , 9F
在一被call的時候,來不及try catch
01/12 12:39, 9F

01/12 12:48, 1年前 , 10F
callback API 詳細長怎樣?
01/12 12:48, 10F

01/12 12:49, 1年前 , 11F
你怎麼判斷是參數問題的?
01/12 12:49, 11F

01/12 12:50, 1年前 , 12F
你所發現的「參數問題」又是怎樣的參數才使程式當掉?
01/12 12:50, 12F

01/12 12:50, 1年前 , 13F
core dump: std::invalid_argument 而且callback第一行都
01/12 12:50, 13F

01/12 12:50, 1年前 , 14F
還沒執行到就掛
01/12 12:50, 14F

01/12 12:51, 1年前 , 15F
外部msg server來的訊息,跟外部要send log 看起來無異常
01/12 12:51, 15F

01/12 12:51, 1年前 , 16F
..
01/12 12:51, 16F

01/12 12:56, 1年前 , 17F
invalid_argument...有種 stoi 失敗的味道在
01/12 12:56, 17F

01/12 12:57, 1年前 , 18F
查一下 send log 裡有沒有該是數字的欄位裡沒有數字
01/12 12:57, 18F

01/12 12:57, 1年前 , 19F
我會猜這不是你們的 callback 的問題
01/12 12:57, 19F

01/12 13:00, 1年前 , 20F
說起來你有 coredump, gdb 進去後是不是停在 stoi 裡?
01/12 13:00, 20F

01/12 13:19, 1年前 , 21F
what () invalid string : float
01/12 13:19, 21F

01/12 13:19, 1年前 , 22F
但跟外部要到的send log沒啥問題…
01/12 13:19, 22F

01/12 14:45, 1年前 , 23F
你可以用組合語言的單步執行嗎?可以找到哪行組語有問題
01/12 14:45, 23F

01/12 15:03, 1年前 , 24F
好像無法組語單步執行,km onmessage一call 進來直接exc
01/12 15:03, 24F

01/12 15:03, 1年前 , 25F
eption 掛掉
01/12 15:03, 25F

01/12 15:03, 1年前 , 26F
因無法try catch 阻擋掛掉 qq
01/12 15:03, 26F

01/12 20:23, 1年前 , 27F
果然雖不中也不遠, 這看起來是掛在 stof 裡
01/12 20:23, 27F

01/12 20:24, 1年前 , 28F
那既然在進入你的 callback 前就掛了合理懷疑是來的訊息中
01/12 20:24, 28F

01/12 20:24, 1年前 , 29F
該是數字的欄位沒有數字, 傳進 stof 就掛了
01/12 20:24, 29F

01/12 20:24, 1年前 , 30F
去問你用的這個 API 的作者有沒有什麼地方會有這種問題
01/12 20:24, 30F

01/12 20:25, 1年前 , 31F
總之這應該是來的訊息跟它的處理程式的問題
01/12 20:25, 31F

01/12 20:25, 1年前 , 32F
和你的 callback 沒有關係
01/12 20:25, 32F

01/12 20:26, 1年前 , 33F
噢, 或許 what() 裡冒號後面的就是傳進的字串本身
01/12 20:26, 33F

01/12 20:27, 1年前 , 34F
你能掌握到的所發送訊息當中有沒有 float 這種字放在
01/12 20:27, 34F

01/12 20:27, 1年前 , 35F
該是數字的欄位當中的?
01/12 20:27, 35F

01/12 20:27, 1年前 , 36F
問題源頭應該是來的訊息, 你也可以問一下發送方
01/12 20:27, 36F

01/12 20:27, 1年前 , 37F
有沒有可能把字串放進數字欄位裡的可能
01/12 20:27, 37F

01/12 22:19, 1年前 , 38F
問發送方的訊息確實沒錯,不知道是不是 callback 在收的
01/12 22:19, 38F

01/12 22:19, 1年前 , 39F
時候記憶體溢出造成參數跑掉嗎?
01/12 22:19, 39F

01/13 03:48, 1年前 , 40F
Linux:sigsetjmp()/siglongjmp()
01/13 03:48, 40F

01/13 03:48, 1年前 , 41F
Win: nirsoft Preventing application crash by using
01/13 03:48, 41F

01/13 03:48, 1年前 , 42F
exception handling mechanism http://bit.ly/3vVmpnE
01/13 03:48, 42F

01/13 03:52, 1年前 , 43F
http://bit.ly/3GEjODh Linux recover from SIGSEGV
01/13 03:52, 43F

01/13 03:54, 1年前 , 44F
01/13 03:54, 44F

01/13 09:20, 1年前 , 45F
用 gdb debug 看看吧
01/13 09:20, 45F

01/13 12:22, 1年前 , 46F
感謝en大,我加上了,但還是直接crash,沒有進入我的sig
01/13 12:22, 46F

01/13 12:22, 1年前 , 47F
_handler 我參考第三個連結
01/13 12:22, 47F

01/13 12:25, 1年前 , 48F
是因為是開thread的關係嗎
01/13 12:25, 48F

01/13 13:57, 1年前 , 49F
後來發現註冊後都回傳ignore..
01/13 13:57, 49F

01/13 15:22, 1年前 , 50F
設定好了,我再試試
01/13 15:22, 50F

01/13 15:22, 1年前 , 51F
目前可抓到segment fault signal
01/13 15:22, 51F
文章代碼(AID): #1ZluTZQo (C_and_CPP)
文章代碼(AID): #1ZluTZQo (C_and_CPP)