最常使用的几个快捷键: F5 启动调试,经常用来直接调到下一个断点处。 (下一个断点是程序逻辑上的下一个断点,进入断点循环后相当于F11); F9 创建断点和取消断点 断点的重要作用,可以在程序的任意位置设置断点。这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。 F10 逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。 F11 逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部(这是最常用的)。 CTRL + F5 开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用。
在调试开始之后,用于观察变量的值
在调试开始之后,用于观察内存信息。
通过调用堆栈,可以清晰的反应函数的调用关系以及当前调用所处的位置
4. 查看汇编信息
在调试开始之后,有两种方式转到汇编: (1)第一种方式:右击鼠标,选择【转到反汇编】:
(2)第二种方式:可以切换到汇编代码
可以查看当前运行环境的寄存器的使用信息
#include <stdio.h>
#include <stdlib.h>
// 定义节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 在链表末尾插入节点
void append(Node** head, int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (*head == NULL) {
*head = newNode;
} else {
Node* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
// 遍历链表并打印所有节点的值
void printList(Node* head) {
Node* current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
int main() {
Node* head = NULL;
append(&head, 1);
append(&head, 2);
append(&head, 3);
append(&head, 4);
append(&head, 5);
printList(head);
return 0;
}
上述代码实现了一个简单的单链表,包含两个函数:append
用于在链表末尾插入节点,printList
用于遍历并打印链表中所有节点的值。
要在VS中调试这段代码,可以按照以下步骤进行:
main.c
)。F9
键,设置断点。在这个示例中,我们可以在printList(head)
行上设置断点,以便在打印链表之前停止程序执行。Start Debugging
(或按下F5
)开始调试程序。Step Over
、Step Into
、Step Out
)逐行执行代码,查看变量的值以及程序的执行流程。Locals
窗口中查看变量的值,或者通过鼠标悬停在变量上来查看其当前值。Stop Debugging
按钮(或按下Shift+F5
)结束调试过程。通过以上步骤,您可以使用VS进行C语言单链表代码的调试,并观察程序的执行过程和变量的值,以便定位和解决问题。