github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/docs/translations/zh_CN/bisect.md (about)

     1  > [!WARNING]
     2  >
     3  > **请注意,这是社区驱动的官方 syzkaller 文档翻译。当前文档的最新版本(英文版)可在 [docs/bisect.md](/docs/bisect.md) 中找到。**
     4  
     5  # Syz-bisect
     6  
     7  `syz-bisect` 程序可用于对由 syzkaller 发现的崩溃进行查找责任提交(culprit commit)和修复提交(fix commit)。
     8  它还可以识别触发崩溃的配置选项。
     9  
    10  ## 使用方法
    11  
    12  使用 `make bisect` 构建 `syz-bisect`。
    13  
    14  在进行二分查找时,根据内核版本的不同,会使用不同的编译器。这些编译器可以在
    15  [这里](https://storage.googleapis.com/syzkaller/bisect_bin.tar.gz)下载。
    16  
    17  安装 ccache 以加速二分查找过程中的内核编译。
    18  
    19  使用 [create-image.sh](/tools/create-image.sh) 创建用户空间 (chroot)。
    20  
    21  根据您的环境调整以下内容并创建配置文件:
    22  
    23  ```
    24  {
    25  	"bin_dir": "/home/syzkaller/bisect_bin",
    26  	"ccache": "/usr/bin/ccache",
    27  	"kernel_repo": "git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git",
    28  	"kernel_branch": "master",
    29  	"syzkaller_repo": "https://github.com/google/syzkaller",
    30  	"userspace": "/home/syzkaller/image/chroot",
    31  	"kernel_config": "/home/syzkaller/go/src/github.com/google/syzkaller/dashboard/config/linux/upstream-apparmor-kasan.config",
    32  	"kernel_baseline_config": "/home/syzkaller/go/src/github.com/google/syzkaller/dashboard/config/linux/upstream-apparmor-kasan-base.config",
    33  	"syzctl": /home/syzkaller/go/src/github.com/google/syzkaller/dashboard/config/linux/upstream.sysctl,
    34  	"cmdline": /home/syzkaller/go/src/github.com/google/syzkaller/dashboard/config/linux/upstream.cmdline,
    35  	"manager":
    36  	{
    37  		"name" : "bisect",
    38  		"target": "linux/amd64",
    39  		"http": "127.0.0.1:56741",
    40  		"workdir": "/home/syzkaller/workdir",
    41  		"kernel_obj": "/home/syzkaller/linux",
    42  		"image": "/home/syzkaller/workdir/image/image",
    43  		"sshkey": "/home/syzkaller/workdir/image/key",
    44  		"syzkaller": "/home/syzkaller/go/src/github.com/google/syzkaller_bisect",
    45  		"procs": 8,
    46  		"type": "qemu",
    47  		"kernel_src": "/syzkaller/linux",
    48  		"vm": {
    49  		      "count": 4,
    50  		      "kernel": "/home/syzkaller/linux/arch/x86/boot/bzImage",
    51  		      "cpu": 2,
    52  		      "mem": 2048,
    53  		      "cmdline": "root=/dev/sda1 rw console=ttyS0 kaslr crashkernel=512M minnowboard_1:eth0::: security=none"
    54  		}
    55  	}
    56  }
    57  ```
    58  
    59  使用 `bin/syz-bisect -config vm_bisect.cfg -crash /syzkaller/workdir/crashes/03ee30ae11dfd0ddd062af26566c34a8c853698d` 进行二分查找。
    60  
    61  `syz-bisect` 需要在指定的崩溃目录中找到 repro.cprog 或 repro.prog 文件。
    62  它也会利用 repro.opts 文件,但这不是必需的。
    63  
    64  ## 额外参数
    65  
    66  `-syzkaller_commit` 如果您想使用特定版本的 syzkaller,请使用此参数。
    67  
    68  `-kernel_commit` 已知可以重现崩溃的内核提交。在查找修复提交时,您会需要使用此参数。
    69  
    70  `-fix` 如果您想对修复提交进行二分查找,请使用此参数。
    71  
    72  ## 输出
    73  
    74  `syz-bisect` 需要一些时间运行,但完成后会将结果输出到控制台。它还会将结果存储在指定崩溃目录的文件中:
    75  
    76  `cause.commit` 被识别为导致崩溃的提交或文本“该崩溃已在最旧的测试版本上发生”
    77  
    78  `fix.commit` 被识别为修复崩溃的提交或文本“该崩溃仍在 HEAD 上发生”
    79  
    80  `cause.config` 被识别为触发崩溃的配置选项
    81  
    82  `original.config, baseline.config, minimized.config` 在配置二分查找中使用的配置文件