gpt4 book ai didi

matlab - 追踪 sigusr1,用 gdb 调试 mex

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:27 25 4
gpt4 key购买 nike

有没有办法追踪到谁发送了 sigusr1?

它是为 Ubuntu 创建的 mex 文件,它在某些情况下会挂起。所以我做了:

1, mex -g *.c   (create .mex file)

2 matlab -Dgdb
3 handle SIGUSR1 stop print
4 run -nojvm (run matlab without gui)
5 dbmex on
6 run my executable

然后打印出来: MEX 文件:/home/X/Desktop/Test/test.mexa 64 入口点位于地址 0xd11ea144 在调试器提示符处添加断点并发出“继续”以恢复 MATLAB 的执行

如果我“继续”,我的可执行文件运行,然后它又卡在那里(我认为和以前一样)。

我尝试了“bt”和“where”,但仍然不知道我从哪里得到 SIGUSR1 以及它挂起的原因。

对于“哪里”,我得到:

#0 0x00007ffff5962ca4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0

#1 0x00007ffff69d7015 in mcr_run_main(boost::function0<int> const&, bool, bool)() from /usr/local/MATLAB/R2013b/bin/glnxa64/libmwmcr.so
#2 0x0000000000405291 in ?? ()
#3 0x00007ffff55b0ea5 in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6

#4 0x0000000000405489 in ?? ()
#5 0x00007fffffffded8 in ?? ()
#6 0x000000000000001c in ?? ()
#7 0x0000000000000002 in ?? ()
#8 0x00007fffffffe208 in ?? ()
#9 0x00007fffffffe234 in ?? ()
#10 0x000000000000000 in ?? ()

任何人都可以在这里帮助指出追踪信号 SIGUSR1 的正确方法(我认为这会导致我的 exe 挂起)?非常感谢!!

更新:按照源文件中的建议在可疑代码之前和周围设置断点。然后继续追踪bug。

刘杰

最佳答案

当在信号处停止时,您可以打印 $_siginfo,然后检查该对象的字段以找到发送信号的进程的 PID。

关于matlab - 追踪 sigusr1,用 gdb 调试 mex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35926625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com