[问题] callback function如何 try catch?

楼主: soufon (Google)   2023-01-12 12:06:57
目前程式中会使用到 callback
这个callback 来在别人api
但此api的来源码要不到
目前发生一触法callback
即直接挂掉
只能靠core dump看
是参数问题
有办法用 try catch 避免程式直接挂点吗
谢谢
作者: CoNsTaR ((const *))   2023-01-12 12:26:00
不懂问题在哪里,直接用 try catch 包住不行?
楼主: soufon (Google)   2023-01-12 12:30:00
callback 的话,无法包住callback 就一个func的定义,无法在定义外包一层try catch,而此func一被触法就挂了,根本连第一行都没执行到,参数就挂了
作者: bdvstg (bdvstg)   2023-01-12 12:32:00
被呼叫的跟呼叫的都在别人那?
楼主: soufon (Google)   2023-01-12 12:38:00
我这边有挂载那只api事件一触发就会跳进api里面,api我们这边有overwrite但挂在一被call的时候,来不及try catch
作者: LPH66 (-6.2598534e+18f)   2023-01-12 12:48:00
callback API 详细长怎样?你怎么判断是参数问题的?你所发现的“参数问题”又是怎样的参数才使程式当掉?
楼主: soufon (Google)   2023-01-12 12:50:00
core dump: std::invalid_argument 而且callback第一行都还没执行到就挂外部msg server来的讯息,跟外部要send log 看起来无异常..
作者: LPH66 (-6.2598534e+18f)   2023-01-12 12:56:00
invalid_argument...有种 stoi 失败的味道在查一下 send log 里有没有该是数字的字段里没有数字我会猜这不是你们的 callback 的问题说起来你有 coredump, gdb 进去后是不是停在 stoi 里?
楼主: soufon (Google)   2023-01-12 13:19:00
what () invalid string : float但跟外部要到的send log没啥问题…
作者: descent (“雄辩是银,沉默是金”)   2023-01-12 14:45:00
你可以用组合语言的单步执行吗?可以找到哪行组语有问题
楼主: soufon (Google)   2023-01-12 15:03:00
好像无法组语单步执行,km onmessage一call 进来直接exception 挂掉因无法try catch 阻挡挂掉 qq
作者: LPH66 (-6.2598534e+18f)   2023-01-12 20:23:00
果然虽不中也不远, 这看起来是挂在 stof 里那既然在进入你的 callback 前就挂了合理怀疑是来的讯息中该是数字的字段没有数字, 传进 stof 就挂了去问你用的这个 API 的作者有没有什么地方会有这种问题总之这应该是来的讯息跟它的处理程式的问题和你的 callback 没有关系噢, 或许 what() 里冒号后面的就是传进的字串本身你能掌握到的所发送讯息当中有没有 float 这种字放在该是数字的字段当中的?问题源头应该是来的讯息, 你也可以问一下发送方有没有可能把字串放进数字字段里的可能
楼主: soufon (Google)   2023-01-12 22:19:00
问发送方的讯息确实没错,不知道是不是 callback 在收的时候内存溢出造成参数跑掉吗?
作者: enthos (影斯作业系统)   2023-01-13 03:48:00
Linux:sigsetjmp()/siglongjmp()Win: nirsoft Preventing application crash by usingexception handling mechanism http://bit.ly/3vVmpnEhttp://bit.ly/3GEjODh Linux recover from SIGSEGVhttps://gist.github.com/Nadrin/1026045 backtrace()
作者: alan23273850   2023-01-13 09:20:00
用 gdb debug 看看吧
楼主: soufon (Google)   2023-01-13 12:22:00
感谢en大,我加上了,但还是直接crash,没有进入我的sig_handler 我参考第三个连结是因为是开thread的关系吗后来发现注册后都回传ignore..设定好了,我再试试目前可抓到segment fault signal

Links booklink

Contact Us: admin [ a t ] ucptt.com