有没有办法追查发送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 在调试器提示符下添加断点并发出" continue"继续执行MATLAB
如果我做了#34;继续",我的可执行文件运行,然后它再次挂起(我认为和以前一样)。
我试过" bt"和"其中",但仍然不知道我在哪里获得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挂起)?非常感谢!!
更新: 根据可疑代码前后的源文件中的建议设置断点。然后继续追踪错误。
LJ
答案 0 :(得分:0)
当信号停止时,您可以print $_siginfo
,然后检查此对象的字段以查找发送信号的过程的PID。