Error[8]: Undefined offset: 10, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace[+++]([+++][+++][+++][+++]0Q4C4[+++][+++][+++]"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

[+++]

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

[+++]

这将写入所有系统调用,除此之外,写入fd 1的数据.

[+++]

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

[+++]

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

[+++]

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 11, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace([+++][+++][+++][+++]0Q4C4[+++][+++][+++]"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

[+++]

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

[+++]

这将写入所有系统调用,除此之外,写入fd 1的数据.

[+++]

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

[+++]

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

[+++]

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 12, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace([+++][+++][+++]0Q4C4[+++][+++][+++]"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

[+++]

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

[+++]

这将写入所有系统调用,除此之外,写入fd 1的数据.

[+++]

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

[+++]

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

[+++]

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 13, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace([+++][+++]0Q4C4[+++][+++][+++]"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

[+++]

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

[+++]

这将写入所有系统调用,除此之外,写入fd 1的数据.

[+++]

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

[+++]

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

[+++]

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 14, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace([+++]0Q4C4[+++][+++][+++]"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

[+++]

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

[+++]

这将写入所有系统调用,除此之外,写入fd 1的数据.

[+++]

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

[+++]

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

[+++]

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 15, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace(0Q4C4[+++][+++][+++]"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

[+++]

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

[+++]

这将写入所有系统调用,除此之外,写入fd 1的数据.

[+++]

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

[+++]

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

[+++]

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 16, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace(0Q4C4[+++][+++]"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

[+++]

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

[+++]

这将写入所有系统调用,除此之外,写入fd 1的数据.

[+++]

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

[+++]

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

[+++]

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 17, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace(0Q4C4[+++]"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

[+++]

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

[+++]

这将写入所有系统调用,除此之外,写入fd 1的数据.

[+++]

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

[+++]

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

[+++]

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 18, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace(0Q4C4"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

[+++]

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

[+++]

这将写入所有系统调用,除此之外,写入fd 1的数据.

[+++]

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

[+++]

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

[+++]

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 19, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace(0Q4C4"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

[+++]

这将写入所有系统调用,除此之外,写入fd 1的数据.

[+++]

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

[+++]

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

[+++]

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 20, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace(0Q4C4"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

这将写入所有系统调用,除此之外,写入fd 1的数据.

[+++]

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

[+++]

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

[+++]

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 21, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace(0Q4C4"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

这将写入所有系统调用,除此之外,写入fd 1的数据.

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

[+++]

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

[+++]

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 22, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace(0Q4C4"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

这将写入所有系统调用,除此之外,写入fd 1的数据.

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

[+++]

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 23, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace(0Q4C4"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

这将写入所有系统调用,除此之外,写入fd 1的数据.

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

[+++]

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 24, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace(0Q4C4"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

这将写入所有系统调用,除此之外,写入fd 1的数据.

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line [+++] is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 25, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace(0Q4C4"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

这将写入所有系统调用,除此之外,写入fd 1的数据.

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line is also a printf statement,but for some reason it is not wrapped around [+++] statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 26, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace(0Q4C4"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

这将写入所有系统调用,除此之外,写入fd 1的数据.

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line is also a printf statement,but for some reason it is not wrapped around statement in [+++] output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
我该如何使用strace来搜索串口?_系统运维_内存溢出

我该如何使用strace来搜索串口?

我该如何使用strace来搜索串口?,第1张

概述我正在linux中编写一个应用程序,需要访问串口.出于调试目的,我需要查看来自和/或通过串行端口的内容.我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:-I打印我使用的串行设备的file_descriptor.(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4” - 如果我以 @H_403_0@

我正在linux中编写一个应用程序,需要访问串口.
出于调试目的,我需要查看来自和/或通过串行端口的内容.

我环顾四周,发现我可以使用strace来做到这一点.所以我尝试了以下方法:

-I打印我使用的串行设备的file_descriptor.

(重新启动我的应用程序几次后,我向自己保证,我的应用程序从内核获取的file_descriptor数字是“4”

– 如果我以strace -e write = 4./ myapp启动我的应用程序,我希望在终端中获取消息,仅来自file_descriptor“4”.相反,我得到输出的looots:

read(5,"7ELFwrite(1,"GPIO data bank:0x8,data: 0x80 a"...,52GPIO data bank:0x8,data: 0x81) = 52                                                                          write(1,"\n",1)   = 1                                                     write(1,"--> Version: 0677 <--\n",22--> Version: 0677 <-- ) = 22                                                                          serial fd = 4 strace -e write=1 echo foostrace -e trace=none -e write=1 echo foostrace -e trace=write -e write=1 echo foowrite(1,"foo\n",4foo)                    = 4 | 00000  66 6f 6f 0a                                       foo.             |+++ exited with 0 +++strace -e trace=write -e write=4 -o >(grep '^ |') ./myappserial fd = 4write(fd,....)strace(0Q4C4"...,52fstat64(5,{st_mode=S_IFREG|0644,st_size=1448930,...}) = 0                    mmap2(0x43ab8000,153816,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_DENYWRITE,5,0)0mprotect(0x43ad6000,28672,PROT_NONE)  = 0                                     mmap2(0x43add000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_DENYWRI0close(5)                                = 0                                     munmap(0x2ab4c000,38409)               = 0                                     exit(0)   

来自几个不同的file_descriptors.

如果我用strace -e trace = write -e write = 4 ./myapp运行我的应用程序

我会得到更少的消息,即使它们仍然很多,或者file_descriptor“1”.

你在上面看到的是一些printf语句.
非常奇怪的部分是,行序列fd = 4也是一个printf语句,但由于某种原因,它不包含在strace输出中的write(fd,….)语句中.
也有人可以解释一下吗?

谢谢您的帮助.

@H_404_36@最佳答案@H_404_36@尝试一下简单.

这将写入所有系统调用,除此之外,写入fd 1的数据.

除了程序本身的输出外,这不会产生任何输出.如果你想查看它的数据,你似乎必须跟踪写入.

这将打印所有写入系统调用,用于任何文件描述符.除此之外,它将打印发送到描述符1的数据的转储.输出将如下所示:

系统调用从第一行开始.在参数列表之后,实际执行了系统调用,并打印foo后跟换行符.然后通过strace打印系统调用返回值.之后,我们有数据转储.

我建议使用-e trace = write -e write = 4 -o write4.txt,然后使用grep’^ |’ write4.txt或类似的东西.如果您想实时查看数据,可以使用这样的bash重定向:

这将从strace发送输出到grep,您可以在其中剥离写入系统调用并专注于数据转储.

The extremely weird part is that the line is also a printf statement,but for some reason it is not wrapped around statement in output. Can someone explain that,too?

我会说这行不是来自strace,而是来自某些应用程序.这就是它没有被包裹的原因.事实上,除了那个未被解包的版本之外,没有包装版本的这个(就像我上面的foo示例输出中所示)表明输出可能源自myapp放置的子进程.也许您想添加-f以便您遵循子进程创建?

请注意,孩子可能决定重命名其文件描述符,例如将其标准输出重定向到父级打开的串行端口.如果发生这种情况,write = 4将不再适用.为了安全起见,我将整个-f -e trace = write输出写入文件,并查看它以查看数据实际写入的位置.然后根据该数据调整内容.

@H_404_36@ 总结

以上是内存溢出为你收集整理的我该如何使用strace来搜索串口?全部内容,希望文章能够帮你解决我该如何使用strace来搜索串口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1046557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存