Skip to content

使用控制台调试各种语言

Published: at 09:21 PM

命令行调试是一种强大的工具,能够让你深入理解代码的执行流程,并帮助你找到难以察觉的错误。虽然现在 IDE 集成了很多调试功能,但命令行调试仍然是很多开发者的首选,因为它提供了更大的灵活性和控制力。

本文将介绍几种主流开发语言的命令行调试方法:

Python

Python 使用 pdb 模块进行调试,它提供了以下常用命令:

n: 执行下一条语句。

s: 步入函数。

c: 继续执行直到下一个断点。

p: 打印表达式。

l: 显示代码。

q: 退出调试器。

使用方法

  1. 在代码中添加断点:使用 import pdb; pdb.set_trace() 在需要调试的地方添加断点。
  2. 运行代码:运行代码后,程序会进入 pdb 调试器。
  3. 使用命令进行调试。

示例

import pdb

def add(x, y):
  pdb.set_trace()
  return x + y

result = add(1, 2)
print(result)

运行代码后,程序会停在断点处,然后你就可以使用 pdb 命令进行调试。

JavaScript

JavaScript 使用 Node.js 的 debugger 语句和 node inspect 命令进行调试。

使用方法

  1. 在代码中添加断点:使用 debugger; 在需要调试的地方添加断点。
  2. 使用 node inspect 命令运行代码:启动 Node.js 调试器。
  3. 使用 repl 命令进行调试。

示例

function add(x, y) {
  debugger;
  return x + y;
}

let result = add(1, 2);
console.log(result);
``
使用 node inspect your_script.js 运行代码后,程序会进入调试器。你可以使用 repl 命令进行交互式调试。

# Java
Java 使用 jdb 命令进行调试。

## 使用方法

1. 在编译代码时添加调试信息:使用 javac -g 命令编译代码。
2. 使用 jdb 命令启动调试器。
3. 使用命令进行调试。
## 示例

```java
public class Main {
  public static void main(String[] args) {
    int sum = add(1, 2);
    System.out.println(sum);
  }

  public static int add(int x, int y) {
    return x + y;
  }
}

使用 javac -g Main.java 编译代码,然后使用 jdb Main 启动调试器,并使用 run 命令运行程序。

C++

C++ 使用 gdb 命令进行调试。

使用方法

  1. 在编译代码时添加调试信息:使用 g++ -g 命令编译代码。
  2. 使用 gdb 命令启动调试器。
  3. 使用命令进行调试。

示例

#include <iostream>

int add(int x, int y) {
  return x + y;
}

int main() {
  int sum = add(1, 2);
  std::cout << sum << std::endl;
  return 0;
}

使用 g++ -g main.cpp -o main 编译代码,然后使用 gdb main 启动调试器,并使用 run 命令运行程序。

Go

Go 使用 dlv 或 gdb 工具进行调试,以下为 dlv 示例。

使用方法

  1. 使用 dlv debug your_program 命令启动调试器。
  2. 使用 break 命令设置断点。
  3. 使用 run 命令运行程序。
  4. 使用 n、s、c 等命令进行调试。

示例

package main

import "fmt"

func main() {
  fmt.Println("Hello, world!")
}

使用 dlv debug main.go 启动调试器,设置断点后,使用 run 运行程序。

PHP

PHP 使用 Xdebug 扩展进行调试,它提供了多种调试功能,包括断点、变量查看、调用栈查看等。

使用方法

  1. 安装 Xdebug 扩展: 使用 pecl install xdebug 命令安装 Xdebug。
  2. 配置 Xdebug: 在 php.ini 文件中配置 Xdebug,设置调试模式、端口等信息。
[xdebug]
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
  1. 启动调试器: php -dxdebug.remote_enable=1 -dxdebug.remote_host=localhost -dxdebug.remote_port=9000 your_script.php
  2. 连接调试器: 使用 IDE 或命令行调试工具连接到 Xdebug,例如使用 phpstorm 或 dbgp 工具。

示例

<?php
function add($x, $y) {
  return $x + $y;
}

$sum = add(1, 2);
echo $sum;

在代码中添加断点,然后使用 php -dxdebug.remote_enable=1 -dxdebug.remote_host=localhost -dxdebug.remote_port=9000 your_script.php 命令启动调试器,最后使用 IDE 或命令行调试工具连接到 Xdebug 进行调试。

Ruby

Ruby 有多种调试器可供选择,如:debugger、byebug、pry、pry-byebug、debug,以下为 byebug 示例,它提供了类似于 pdb 的调试功能。

使用方法

  1. 安装 byebug gem: 使用 gem install byebug 命令安装 byebug gem。
  2. 添加断点: 在需要调试的地方添加 byebug 代码。
  3. 运行代码: 运行代码后,程序会进入 byebug 调试器。
  4. 使用命令进行调试: 使用 byebug 命令进行调试,例如 next、step、continue、break 等命令。

示例

def add(x, y)
  byebug # 设置断点
  return x + y
end

sum = add(1, 2)
puts sum

运行代码后,程序会停在断点处,然后你就可以使用 byebug 命令进行调试。例如,使用 next 执行下一行代码,使用 step 步入函数,使用 continue 继续执行直到下一个断点。

Rust

Rust 使用 gdb 或 lldb 命令进行调试,以下为 gdb 示例,它提供了类似于 C++ 的调试功能。

使用方法

  1. 编译代码: 使用 cargo build —target=debug 命令编译代码,并生成包含调试信息的二进制文件。
  2. 启动调试器: 使用 gdb your_program 命令启动调试器。
  3. 设置断点: 使用 break 命令设置断点。
  4. 运行程序: 使用 run 命令运行程序。
  5. 使用命令进行调试: 使用 gdb 命令进行调试,例如 n、s、c、p 等命令。

示例

fn add(x: i32, y: i32) -> i32 {
  x + y
}

fn main() {
  let sum = add(1, 2);
  println!("{}", sum);
}

使用 cargo build —target=debug 编译代码,然后使用 gdb target/debug/your_program 启动调试器,设置断点后,使用 run 运行程序。

更多文档

如何使用 dlv 结合 Goland 进行程序 debug 调试