在strace下运行时,Gammu具有不同的行为

时间:2019-02-01 09:50:30

标签: strace gammu

我正在尝试调试Gammu,这是“用于移动电话的库和命令行实用程序”,当与调制解调器正常通信时,该功能会“定时退出”。

gammu identify-> No response in specified timeout. Probably phone not connected.

查看它产生的额外调试信息,由于某种原因,它不是“识别”调制解调器 IS 给出的响应(假定通过手册拨打AT命令时其响应正确)串行终端)。

但是,我的问题主要是关于在strace下运行SAME PROGRAM,它没有问题,并且没有超时。

strace -e trace=open,close,read,write gammu identify->(有关调制解调器的全部信息)

strace正在/将要做什么会导致这种行为差异? strace如何影响其子进程?

(在Ubuntu 18.04,Gammu 1.39.0上运行)

1 个答案:

答案 0 :(得分:0)

我已经在不同的平台上看到了这种行为。有时代码可以在调试中成功运行。这意味着由于调试,所有代码的工作速度都变慢,并且该用户没有超时。例子

makeSomeCallToServerOrPhone();
if(noResponseIn(5))
  throw new TimeOutException();
如果服务器没有响应,

应用程序将在5毫秒内引发异常。在调试中,这将起作用,因为在逐步运行代码时。服务器将及时响应,并且一切正常。但是在正常运行情况下,这5毫秒很小,服务器或电话在出现异常时可能无法及时响应。

strace还可以在调试和慢速控制下运行更多程序。因此,gammu看起来像在工作。可能您可以给gammu配置并更改超时检查https://wammu.eu/docs/manual/smsd/config.html