Cygwin例外:打开堆栈转储文件

时间:2014-09-14 20:48:20

标签: c linux cygwin windows-7-x64

我正在使用Cygwin在Windows 7上开发一个linux命令解释器。 我的代码正在编译并正确运行,直到我收到此错误:

cygwin_exception::open_stackdumpfile:Dumping stack trace to jstack dump

我用谷歌搜索了,但我找不到解决方案

请帮忙吗?

6 个答案:

答案 0 :(得分:5)

当我尝试在函数期望指针时将值传递给函数时,我发现我收到此错误。

例如:

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

这段代码将获得一个cygwin_exception :: open_stackdump文件,因为你将int i(一个值)传递给一个期望内存地址的函数。

但是,这完全取决于我的经验,当然可能还有其他原因导致此错误。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

这适用于ConEmu以及其他基于Windows的终端模拟器,您可能需要将“向后滚动”或“缓冲区高度”设置为小于2000的值。

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

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

答案 3 :(得分:0)

将char数组与strcpystrcat连接时,我也遇到类似的问题

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]

来解决了这个问题

答案 4 :(得分:0)

我在尝试使用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));

答案 5 :(得分:-2)

我在followin前遇到了这个错误:

v = d / t;

t和d都声明为int;   d是计算得出的;

我忘了表达我们得到(计算)t的方式。这使我陷入了那种错误。