我正在使用Cygwin在Windows 7上开发一个linux命令解释器。 我的代码正在编译并正确运行,直到我收到此错误:
cygwin_exception::open_stackdumpfile:Dumping stack trace to jstack dump
我用谷歌搜索了,但我找不到解决方案
请帮忙吗?
答案 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数组与strcpy
和strcat
连接时,我也遇到类似的问题
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的方式。这使我陷入了那种错误。