Cygwin异常:打开堆栈转储文件

9

我正在使用Cygwin在Windows 7上为Linux编写命令解释器的代码。我的代码一直能够正确编译和运行,但是最近遇到了以下错误:

cygwin_exception::open_stackdumpfile:Dumping stack trace to jstack dump
6个回答

7

我发现当我试图将一个值传递给一个期望指针的函数时,会出现这个错误。

例如:

int arr[] = {1, 2, 3};
int i = 3;
memmove(i, arr, 3);

这段代码会出现cygwin_exception::open_stackdumpfile错误,因为你将一个值int i传递给一个期望内存地址的函数。

然而,这仅基于我的经验,这个错误可能有其他原因。


2

我今天遇到了这个问题。后来我发现后台还有另一个cygwin会话(shell)正在运行。可能它们影响了彼此的内存位置/分配。 一旦我杀死了它们两个,打开了一个新的,一切都恢复正常了! 希望能对你有所帮助。


1
我发现了相同的问题,所有的cygwin终端都注册了一个运行中的bash.exe,但是还有一个额外的sh.exe在运行。 - fpga_magik

1
我在使用memcpy()时遇到了错误。问题是我试图将一个数组复制到一个未初始化的指针中。
错误代码:
int array[] = {1, 2, 3, 4, 5};
int *arrPtr = array;
int *mem_ptr = NULL;                           // this row
memcpy(mem_ptr, array, 5 * sizeof(int));

我是如何解决的:
int array[] = {1, 2, 3, 4, 5};
int *arrPtr = array;
int *mem_ptr = malloc(sizeof(int) * 5);       // this row
memcpy(mem_ptr, array, 5 * sizeof(int));

0

这适用于ConEmu和其他基于Windows的终端仿真器,您可能需要将“滚动条”或“缓冲区高度”设置为小于2000的值。

实际数字取决于您终端的宽度。对我来说,最大化的窗口横跨240个字符,可以支持大约3200行的“滚动条”,然后cygwin应用程序开始崩溃。

我可以通过在干净的终端上运行ls -l -R / | head -n 2000或类似输出来测试此功能,并诱导cygwin应用程序崩溃。


0

在使用 strcpystrcat 连接 char 数组时,我遇到了类似的问题。

const char *host = "http://myaddress";
const char *uri = "/api/devices/";
const char *changes = "getChanges?";
const char *token = "token=something";
char *link;

strcpy(link, host);
strcat(link, uri);
strcat(link, changes);
strcat(link, token);
puts(link);

问题出现在执行strcpy时。 我通过将char *link更改为char link[50]来解决它。

-1
我在下面的代码中遇到了这个错误:
v=d/t;
t和d都被声明为int; d已经被计算过;
我忘记表达计算t的方式。这就导致了那种类型的错误。

请花点时间阅读[编辑帮助](//stackoverflow.com/editing-help)中的内容。在[帮助]中,Stack Overflow的格式与其他网站不同。 - Dharman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接