我正在尝试调试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如何影响其子进程?
(在Ubuntu 18.04上运行,Gammu 1.39.0)
我在不同的平台上都看到过这种行为。有时代码在调试中运行成功。这意味着由于调试,所有代码的运行速度都会变慢,并且用户不会超时。例子
makeSomeCallToServerOrPhone();
if(noResponseIn(5))
throw new TimeOutException();
Run Code Online (Sandbox Code Playgroud)
如果服务器没有响应,应用程序将在 5 毫秒内抛出异常。在调试中,这将起作用,因为当您逐步运行代码时。服务器会及时响应,一切都会正常。但在正常运行时,5 毫秒非常小,服务器或电话可能无法及时响应,出现异常。
strace 还可以像调试一样更受控制地运行程序并且速度更慢。因为 gammu 看起来像是在工作。也许你可以给 gammu 配置并更改超时检查https://wammu.eu/docs/manual/smsd/config.html
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |