从Makefile运行时程序未崩溃

从Makefile运行时程序未崩溃,makefile,segmentation-fault,Makefile,Segmentation Fault,我有一个特定的可执行文件(我们称之为bin),当使用/bin正常运行时,它会因segfault而崩溃,但如果我创建此生成文件: all: ./bin 我做了make,可执行文件运行时没有错误并且正确终止。这怎么可能呢?您没有说您使用的是哪个版本的make,但较旧版本的GNU make有一个错误,make将自己的堆栈大小设置为“无限”,然后在运行程序时没有将其设置回默认值。较新版本的GNU修复了该缺陷,使程序以默认堆栈大小运行 请参见您没有说明您使用的是哪个版本的make,但较旧版本的GNU

我有一个特定的可执行文件(我们称之为
bin
),当使用
/bin
正常运行时,它会因segfault而崩溃,但如果我创建此生成文件:

all: 
./bin

我做了
make
,可执行文件运行时没有错误并且正确终止。这怎么可能呢?

您没有说您使用的是哪个版本的make,但较旧版本的GNU make有一个错误,make将自己的堆栈大小设置为“无限”,然后在运行程序时没有将其设置回默认值。较新版本的GNU修复了该缺陷,使程序以默认堆栈大小运行


请参见

您没有说明您使用的是哪个版本的make,但较旧版本的GNU make有一个错误,make将自己的堆栈大小设置为“无限”,然后在运行程序时没有将其设置回默认值。较新版本的GNU修复了该缺陷,使程序以默认堆栈大小运行


未定义的行为浮现在脑海中。似乎并非如此。。。每次在Makefile之外时它都会崩溃。。。我可以在Makefile外部看到gdb的segfault,但是当我在它内部看到
gdb./bin
时,它不会发生,因为您可以访问源代码。你能准备一份吗?如果这是一项艰巨的工作,您应该首先检查shell——验证您使用的shell是否与Make相同,以防
bin
以某种方式依赖它。(您可以将
$(info shell是$(shell))
放在makefile中,并在命令行上放置类似
echo$shell的内容。)是的,我写了它,但我已经解决了问题。。。这是由于堆栈大小有限,因为我做了很多递归调用。在Makefile环境中,是否有可能默认定义了更高的限制?脑海中浮现出未定义的行为。似乎并非如此。。。每次在Makefile之外时它都会崩溃。。。我可以在Makefile外部看到gdb的segfault,但是当我在它内部看到
gdb./bin
时,它不会发生,因为您可以访问源代码。你能准备一份吗?如果这是一项艰巨的工作,您应该首先检查shell——验证您使用的shell是否与Make相同,以防
bin
以某种方式依赖它。(您可以将
$(info shell是$(shell))
放在makefile中,并在命令行上放置类似
echo$shell的内容。)是的,我写了它,但我已经解决了问题。。。这是由于堆栈大小有限,因为我做了很多递归调用。在Makefile环境中,是否可能默认定义了更高的限制?