mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
src: use basename(argv0) for --trace-uncaught suggestion
Refs: https://github.com/nodejs/node/pull/32797#discussion_r407222290 PR-URL: https://github.com/nodejs/node/pull/32798 Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com>
This commit is contained in:
@@ -375,8 +375,13 @@ static void ReportFatalException(Environment* env,
|
||||
}
|
||||
|
||||
if (!env->options()->trace_uncaught) {
|
||||
FPrintF(stderr, "(Use `node --trace-uncaught ...` to show "
|
||||
"where the exception was thrown)\n");
|
||||
std::string argv0;
|
||||
if (!env->argv().empty()) argv0 = env->argv()[0];
|
||||
if (argv0.empty()) argv0 = "node";
|
||||
FPrintF(stderr,
|
||||
"(Use `%s --trace-uncaught ...` to show where the exception "
|
||||
"was thrown)\n",
|
||||
fs::Basename(argv0, ".exe"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -82,6 +82,22 @@ constexpr char kPathSeparator = '/';
|
||||
const char* const kPathSeparator = "\\/";
|
||||
#endif
|
||||
|
||||
std::string Basename(const std::string& str, const std::string& extension) {
|
||||
std::string ret = str;
|
||||
|
||||
// Remove everything leading up to and including the final path separator.
|
||||
std::string::size_type pos = ret.find_last_of(kPathSeparator);
|
||||
if (pos != std::string::npos) ret = ret.substr(pos + 1);
|
||||
|
||||
// Strip away the extension, if any.
|
||||
if (ret.size() >= extension.size() &&
|
||||
ret.substr(ret.size() - extension.size()) == extension) {
|
||||
ret = ret.substr(0, ret.size() - extension.size());
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline int64_t GetOffset(Local<Value> value) {
|
||||
return IsSafeJsInt(value) ? value.As<Integer>()->Value() : -1;
|
||||
}
|
||||
|
||||
@@ -396,6 +396,10 @@ BaseObjectPtr<AsyncWrap> CreateHeapSnapshotStream(
|
||||
Environment* env, HeapSnapshotPointer&& snapshot);
|
||||
} // namespace heap
|
||||
|
||||
namespace fs {
|
||||
std::string Basename(const std::string& str, const std::string& extension);
|
||||
} // namespace fs
|
||||
|
||||
} // namespace node
|
||||
|
||||
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
||||
|
||||
Reference in New Issue
Block a user