【发布时间】:2020-02-17 18:51:36
【问题描述】:
我有两个 xdebug 跟踪文件,每个大约 25 MB。其中一个导致了错误,我试图找到两个执行序列偏离的位置。问题是我想忽略的两个文件之间存在一堆不相关的差异,例如远程端口号、查询时间和其他数据库统计信息。
我第一次尝试解决这个问题是在 excel 中打开跟踪文件并删除大部分时间明显不同的执行时间。然后我尝试使用比较/合并应用程序来消除其他不相关的差异。例如,我用占位符字符串 PORT_NUMBER 替换了两个文件中的远程端口号。一些差异会一次又一次地重复,所以我需要能够全局搜索和替换。问题是我尝试过的所有应用程序都非常慢并且经常崩溃。他们无法处理自动换行、搜索和替换的渲染,甚至无法对这么大的文件进行简单的编辑。
我尝试了许多比较/合并应用程序,包括 DiffMerge、WinMerge、KDiff3、Meld、Notepad++、Eclipse 和 Visual Studio Code。我不认为一起使用 diff 和 sed 会起作用,因为我需要查看内联差异并快速跳转到大文件的不同部分。我还必须复制并粘贴与 diff 的差异以在 sed 中使用,并且他们为 sed 使用另一个终端。还有特殊字符和极长的行,所以我认为 sed 不是一个好的选择。
我想找到一种方法来使用跟踪文件来找到执行序列中的偏差点。
【问题讨论】:
-
如果你熟悉 linux 终端中的 vim,你可以使用 vimddiff,它允许你通过 cat 命令隐藏一些列:
vimdiff <(cut -c10-14,110- file1) <(cut -c10-14,110- file2)
标签: php merge compare xdebug trace