程序在调试执行过程中以状态码 0 退出
Program exits with status code 0 in the middle of the execution in debug
我已经将我的程序缩减到绝对最小值,并且在调试模式下似乎有一个奇怪的错误(它在发布模式下有效)。每当我在行 auto* buckets = new Temp[bucket_count];
上设置断点时,Clion 在该行停止后的半秒内以 Process finished with exit code 0
退出。此后不再执行任何代码行。
但是,如果我注释掉 lambda const auto GetBucketIndex = ...;
,断点会停止,我可以继续单步执行我的程序(此示例和我的非缩减程序的行为相同).删除模板并将其替换为 int
也会消除错误。
我最初的想法是我在某处有一些未定义的行为,但我看不出会有任何行为。可能是什么问题?这可能是 Clion 的错误吗?我的另一个网络项目也遇到了同样的问题。
#include <cstdio>
struct Temp
{
int hello;
};
template <class T>
void BucketSort(T* array, size_t count, size_t bucket_count)
{
auto* buckets = new Temp[bucket_count];
const auto GetBucketIndex = [](int element, size_t bucket_count) { return size_t((element / 9.0001f) * bucket_count); };
}
int main()
{
printf("BucketSort: ");
int array[10] = {6, 3, 2, 0, 1, 5, 8, 7, 9, 4};
BucketSort(array, 10, 3);
}
OP 提交的 CLion 错误报告
原始答案(提示 OP 打开错误报告)
您的程序格式正确,这很可能是 CLion 调试器子系统中的错误,已经有几个类似的公开错误报告:
- CPP-10327 : Debuger ends with exit code 0 when expanding specific variables with SystemC tlm fifo
- CPP-11478: Debugging sporatically exits with code 0
- ...
许多未解决的工单都有一个共同点,即缺乏细节或缺乏可重现的示例。但是,正如您所做的那样,有一个简洁的示例,您可能希望 submit a bug report 在调试器子系统上。
然而,有一些关闭的可以说是相关的工单
- CPP-6257: Debug continue to return 0 in main function (注:(有点旧;标记为已在 2016.2 中修复)
- CPP-17062: Hovering over a variable exits the debug process
后者的调查和解决,涉及到用lldb调试,特别有意思:
Maxim Banaev commented 29 Feb 2020 00:44:
Broken in CLIon 2019.1.4
Works fine in CLion 2019.2.5( #CL-192.7142.39) and later versions.
如果您也在使用 lldb,您可能希望在提交自己的报告之前尝试使用 CLion 2019.2.5 或更高版本重现您自己的问题。
我已经将我的程序缩减到绝对最小值,并且在调试模式下似乎有一个奇怪的错误(它在发布模式下有效)。每当我在行 auto* buckets = new Temp[bucket_count];
上设置断点时,Clion 在该行停止后的半秒内以 Process finished with exit code 0
退出。此后不再执行任何代码行。
但是,如果我注释掉 lambda const auto GetBucketIndex = ...;
,断点会停止,我可以继续单步执行我的程序(此示例和我的非缩减程序的行为相同).删除模板并将其替换为 int
也会消除错误。
我最初的想法是我在某处有一些未定义的行为,但我看不出会有任何行为。可能是什么问题?这可能是 Clion 的错误吗?我的另一个网络项目也遇到了同样的问题。
#include <cstdio>
struct Temp
{
int hello;
};
template <class T>
void BucketSort(T* array, size_t count, size_t bucket_count)
{
auto* buckets = new Temp[bucket_count];
const auto GetBucketIndex = [](int element, size_t bucket_count) { return size_t((element / 9.0001f) * bucket_count); };
}
int main()
{
printf("BucketSort: ");
int array[10] = {6, 3, 2, 0, 1, 5, 8, 7, 9, 4};
BucketSort(array, 10, 3);
}
OP 提交的 CLion 错误报告
原始答案(提示 OP 打开错误报告)
您的程序格式正确,这很可能是 CLion 调试器子系统中的错误,已经有几个类似的公开错误报告:
- CPP-10327 : Debuger ends with exit code 0 when expanding specific variables with SystemC tlm fifo
- CPP-11478: Debugging sporatically exits with code 0
- ...
许多未解决的工单都有一个共同点,即缺乏细节或缺乏可重现的示例。但是,正如您所做的那样,有一个简洁的示例,您可能希望 submit a bug report 在调试器子系统上。
然而,有一些关闭的可以说是相关的工单
- CPP-6257: Debug continue to return 0 in main function (注:(有点旧;标记为已在 2016.2 中修复)
- CPP-17062: Hovering over a variable exits the debug process
后者的调查和解决,涉及到用lldb调试,特别有意思:
Maxim Banaev commented 29 Feb 2020 00:44:
Broken in CLIon 2019.1.4
Works fine in CLion 2019.2.5( #CL-192.7142.39) and later versions.
如果您也在使用 lldb,您可能希望在提交自己的报告之前尝试使用 CLion 2019.2.5 或更高版本重现您自己的问题。