Matlab 跟踪sigusr1,用gdb调试mex

Matlab 跟踪sigusr1,用gdb调试mex,matlab,ubuntu,gdb,signals,mex,Matlab,Ubuntu,Gdb,Signals,Mex,有没有办法追踪谁发送了信号1 它是为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入口点位

有没有办法追踪谁发送了信号1

它是为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的执行

如果我执行“继续”,我的可执行文件将运行,然后它将再次挂起(我认为与以前一样)

我试过“bt”和“where”,但仍然不知道从哪里得到SIGUSR1以及为什么它挂起

对于“何处”,我得到:

pthread_cond_wait@GLIBC_2.3.2()中的0 0x00007ffff5962ca4来自/lib/x86_64-linux-gnu/libpthread.so.0 #从/usr/local/MATLAB/R2013b/bin/glnxa64/libmwmcr.so获取1 0x00007FF69D7015,位于mcr_run_main(boost::function0 const&,bool,bool)中 #2 0x0000000000405291英寸??() #3 0x00007ffff55b0ea5,位于/lib/x86\u 64-linux-gnu/libc.so.6中的 #4 0x000000000040489英寸??() #5 0x00007FFFFFDED8英寸??() #6 0x000000000000001c英寸??() #7 0x0000000000000002英寸??() #8 0x00007FFFFFE208英寸??() #9 0x00007FFFFFE234英寸??() #10 0x000000000000000英寸??() 有人能帮我指出跟踪信号SIGUSR1的正确方法吗(我认为这会导致我的exe挂起)?非常感谢

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


LJ

在信号停止时,您可以
打印$\u siginfo
,然后检查此对象的字段以查找发送信号的进程的PID。

在信号停止时,您可以
打印$\u siginfo
,然后检查此对象的字段,以找到发送信号的进程的PID。

这很可能是由于分段错误造成的。除非看到您的MEX函数,否则我们无法了解发生了什么。在运行MEX文件之前,您是否打开(
dbmex on
)了?非常感谢您的回复。是的,它可能意味着分割。但是我不知道如何找到它。是的,Suever,我做了但忘了在这里打字。编辑。谢谢。上的
dbmex不应该在
run-nojvm
之后吗?i、 e.它在matlab中执行,而不是GDB,这很可能是由于分段错误造成的。除非看到您的MEX函数,否则我们无法了解发生了什么。在运行MEX文件之前,您是否打开(
dbmex on
)了?非常感谢您的回复。是的,它可能意味着分割。但是我不知道如何找到它。是的,Suever,我做了但忘了在这里打字。编辑。谢谢。上的
dbmex不应该在
run-nojvm
之后吗?i、 它是在matlab中执行的,而不是在gdb中执行的
#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 ?? ()