gpt4 book ai didi

c - 使用 GDB 确定代码错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:56 25 4
gpt4 key购买 nike

所以我得到了下面的一大块代码,并告诉他们其中有三个错误。好的,那太好了。我将使用“核心”文件和 gdb 来查看代码。

然而,我真的很难理解我在看什么。我被告知使用以下命令运行 gdb:

gdb 打印测试核心

但我实际上并不知道“核心”论点的作用或之后该做什么。遗憾的是,我对 gdb 的了解仅限于绝对基础知识。非常感谢任何继续进行的建议。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "natural.h"


/* This program is a test driver for arbitrary precision addition. It expects
* two integers expressed in hex as command-line arguments. Naturals, however,
* are read from streams. Libc has a memory stream. These look like file
* streams, but they actually "read" from the strings. This lets us read two
* natural numbers, add them together, and display the results. There is a
* little bookkeeping at the end to free or release the memory used by the
* natural numbers. These would be destructors or finalizers in C++ or Java.
*/
int main(int argc, char* argv[])
{
natural_t l,r,s;
FILE* fmem;

if (argc != 3) {
fprintf(stderr, "Usage: %s {hexdigits} {hexdigits}\n", argv[0]);
return EXIT_FAILURE;
}

fmem = fmemopen(argv[1], strlen(argv[1]), "r");
l = read_natural(fmem);
fclose(fmem);

fmem = fmemopen(argv[2], strlen(argv[2]), "r");
r = read_natural(fmem);
fclose(fmem);

s = add_naturals(l,r);

print_natural(stdout, s);
printf("\n");

release_natural (&l);
release_natural (&r);
release_natural (&s);

return EXIT_SUCCESS;
}

最佳答案

您还应该有一个名为“core”的文件。这是一个核心转储,当程序崩溃时可选择生成(如果 ulimit 核心转储大小设置为非零)。这实际上是您的程序在崩溃时的工作内存快照,因此可以通过事后调试器进行检查,这就是您在此处使用 GDB 的目的。

GDB 由 gdb [program] [core_dump] 运行,因此通过运行 gdb print_test core,您将在程序“print_test”上运行 GDB,并且核心转储“核心”。从这里开始,您可以像往常一样使用 gdb。第一个调用端口是运行“backtrace”命令以确定程序崩溃的位置,并使用“print”命令打印出变量的内容。从这里开始,您必须查阅 GDB 手册以获取更多信息,因为对 GDB 的完整介绍超出了本答案的范围。

关于c - 使用 GDB 确定代码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24129544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com