Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用GDB的cygwin 1.7环境中,如何使gettimeofday函数调用失败?_C_Linux_Linux Kernel_Cygwin_Time.h - Fatal编程技术网

在使用GDB的cygwin 1.7环境中,如何使gettimeofday函数调用失败?

在使用GDB的cygwin 1.7环境中,如何使gettimeofday函数调用失败?,c,linux,linux-kernel,cygwin,time.h,C,Linux,Linux Kernel,Cygwin,Time.h,我正在寻找一种在cygwin 1.7环境下使用GDB使函数调用gettimeofday失败的方法。任何人知道我们是否以下面提到的方式使用它吗 gettimeofday(&tv,NULL) 提前谢谢 Aman您可以在gettimeofday的出口处设置断点并修改返回代码。或者,可以在调用gettimeofday之前设置断点,然后修改调用参数。不过,在后一种情况下,除了将第一个参数修改为NULL之外,您可以做的事情不多。这将使libc实现返回EFAULT(或crash,我认为cygwin实现更可能返

我正在寻找一种在cygwin 1.7环境下使用GDB使函数调用gettimeofday失败的方法。任何人知道我们是否以下面提到的方式使用它吗 gettimeofday(&tv,NULL)

提前谢谢
Aman

您可以在gettimeofday的出口处设置断点并修改返回代码。或者,可以在调用gettimeofday之前设置断点,然后修改调用参数。不过,在后一种情况下,除了将第一个参数修改为NULL之外,您可以做的事情不多。这将使libc实现返回EFAULT(或crash,我认为cygwin实现更可能返回EFAULT)。

您好,谢谢您的回复,但问题是gettimeofday是一个及时定义的系统函数。h我无法使用gdb中的断点进入其实现代码,因此,我无法更改调用参数。如果我将第一个参数更改为NULL,那么我就得到了分段错误。你知道有什么方法可以使当前系统日期无效吗。那么我认为这个功能会失败。等待你方的答复@fork0您可以在“系统函数”(即您没有源代码的函数)上设置断点。只需将函数名指定给断点命令br gettimeofday,您就可以使用“stepi”逐个指令执行指令,或者只需将“step”指定给step,直到到达具有行号的指令为止。您可以修改gettimeofday将通过直接修改堆栈获得的参数:set(unsigned long)($sp-4)=0(崩溃),或者修改结果,通常是在x86上的EAX中:set$EAX=-1但是如果您可以轻松修改代码,您可以用一些明确的错误来替换对gettimeofday的调用:if((gettimeofday(&now,NULL),(errno=EFAULT),-1)!=0){…},并且回答您关于使系统时间无效的问题:不,您不能。