Gdb 与strcpy()相关的分段错误

Gdb 与strcpy()相关的分段错误,gdb,segmentation-fault,strcpy,Gdb,Segmentation Fault,Strcpy,我的问题是,我有一个程序在Windows上运行得很好,而在Dev机器上,它给出了分段错误,而我的程序没有任何输出。为了测试它,我在main的开头,在任何代码段之前放了一个printf(),它仍然给出了分段错误,而没有打印任何内容 #0 0x00007f374105adc0 in_uustrcpy_usse2(),来自/lib64/libc.so.6 我能理解的唯一一行是加粗的那一行。我不想用我的全部代码把页面弄得臃肿不堪。所以,如果你们能给我一个方向或要求具体的那一行,我会在这里准备好的 编辑:

我的问题是,我有一个程序在Windows上运行得很好,而在Dev机器上,它给出了分段错误,而我的程序没有任何输出。为了测试它,我在main的开头,在任何代码段之前放了一个printf(),它仍然给出了分段错误,而没有打印任何内容

#0 0x00007f374105adc0 in_uustrcpy_usse2(),来自/lib64/libc.so.6

我能理解的唯一一行是加粗的那一行。我不想用我的全部代码把页面弄得臃肿不堪。所以,如果你们能给我一个方向或要求具体的那一行,我会在这里准备好的

编辑:添加了有意义的回溯,删除了一些含糊不清的东西。 我对调试进行了更多的调查,获得了这些信息

0 0x00007f6da93f2dc0位于/lib64/libc.so.6中的

读取客户信息()中的1 0x00000000004017e5

2 0x0000000000401756英寸读取用户()

3 0x0000000000401289处于操作状态()

4 0x0000000000401a64主目录()

最内层函数中的代码段

char *name;
name = (char*)malloc(15*sizeof(char));
int transaction_amount;
int transaction_time;

coming_minute=atoi(strtok(temp_line,",\0"));
strcpy(name,strtok(NULL,",\0"));

我可以看到使用strtok作为strcpy的参数可能会导致此segfault。我应该使用临时字符指针,而不是直接使用strtok()返回值中的指针吗

你能做的最好的事情就是创建一个最小的工作示例。不要发布全部代码,只发布几行代码来说明问题。如果在构造示例时自己没有发现错误,您会感到惊讶:-)您将有效的格式字符串传递到
printf
,例如
printf(“abc”)
,不是吗?这是不够的信息。通常,如果在strcpy中看到崩溃,则表示输入错误。你必须使用“up”命令来查找errorUp或backtrace(bt)。我已经用额外的好信息编辑了我的第一篇文章。