【发布时间】:2018-03-03 08:16:51
【问题描述】:
问题::
我有一个日志文件,其中包含如下信息(超过 200 个错误集)。 在这里,我想在“ERROR: AddressSanitizer”行之后找到第一个 .c 文件和函数。
如果您在 "ERROR:" 行之后看到这里
- 文件 - asfrecohandling.c
- 函数 - ASFPotRecoHandling_Create_RecPaxSrvcComp
回答::
awk '/ERROR: AddressSanitizer/ {L = 1} L && /\.c/ {print "file:", $5; print "function:", $4; L = 0}' file
file: ../Sources/ASFServices_Process/C/asfrecohandling.c:1431
function: ASFPotRecoHandling_Create_RecPaxSrvcComp
日志::
=================================================================
==10073==ERROR: AddressSanitizer: heap-use-after-free on address 0x7f5941fe08c0 at pc 0x7f5ed5d37de8 bp 0x7fffe6927310 sp 0x7fffe6927308
READ of size 4 at 0x7f5941fe08c0 thread T0
#0 0x7f5ed5d37de7 in ASFPotRecoHandling_Create_RecPaxSrvcComp ../Sources/ASFServices_Process/C/asfrecohandling.c:1431
#1 0x7f5ed5d2ef50 in ASFPotRecoHandling ../Sources/ASFServices_Process/C/asfrecohandling.c:399
我看到很少有日志也有 .cpp 文件。现在我想使用上述相同命令检查第一行中的 .c 或 .cpp 文件。我试过 && 和 ||也一样,但没有运气
#0 0x7f5ed5d37de7 in ASFPotZXZXoHandling_KJT_RecPBVBVrvcComp ../Sources/ASFServices_Process/C/asfrecohandling.cpp:1431
#1 0x7f5ed5d2ef50 in ASFPotRecoHandling ../Sources/ASFServices_Process/C/asfrecohandling.c:399
【问题讨论】:
-
欢迎来到 Stack Overflow,请在您的帖子中添加带有 CODE TAGS 的示例。
-
因此,c/cpp-file 的行紧跟在下一行,由于行太长,被换行,或者是在下一行之一,你只是想从他们中的第一个获取内容吗?