| @@ -32,6 +32,7 @@ | |||||
| #include "frontend/operator/composite/composite.h" | #include "frontend/operator/composite/composite.h" | ||||
| #include "ir/tensor.h" | #include "ir/tensor.h" | ||||
| #include "debug/anf_ir_utils.h" | #include "debug/anf_ir_utils.h" | ||||
| #include "debug/common.h" | |||||
| #include "pipeline/jit/static_analysis/evaluator.h" | #include "pipeline/jit/static_analysis/evaluator.h" | ||||
| #include "utils/log_adapter.h" | #include "utils/log_adapter.h" | ||||
| @@ -155,9 +156,9 @@ std::unordered_map<FuncGraphPtr, TaggedNodeMap> CalcTaggedFuncGraphs() { | |||||
| return tagged_func_graphs; | return tagged_func_graphs; | ||||
| } | } | ||||
| void OutputAnalyzedGraphWithType() { | |||||
| void OutputAnalyzedGraphWithType(const string &file_path) { | |||||
| AnalyzedFuncGraphExporter exporter; | AnalyzedFuncGraphExporter exporter; | ||||
| exporter.ExportFuncGraph("analyze_fail.dat", GetCNodeDebugStack()); | |||||
| exporter.ExportFuncGraph(file_path, GetCNodeDebugStack()); | |||||
| } | } | ||||
| std::string AnalyzedFuncGraphExporter::GetNodeType(const AnfNodePtr &node) { | std::string AnalyzedFuncGraphExporter::GetNodeType(const AnfNodePtr &node) { | ||||
| @@ -494,8 +495,19 @@ void GetEvalStackInfo(std::ostringstream &oss) { | |||||
| return; | return; | ||||
| } | } | ||||
| OutputAnalyzedGraphWithType(); | |||||
| oss << "\nThe function call stack (See file 'analyze_fail.dat' for details):\n"; | |||||
| string file_name = "analyze_fail.dat"; | |||||
| auto ms_om_path = common::GetEnv("MS_OM_PATH"); | |||||
| if (!ms_om_path.empty()) { | |||||
| auto path = ms_om_path + "/" + "analyze_fail.dat"; | |||||
| auto realpath = Common::GetRealPath(path); | |||||
| if (!realpath.has_value()) { | |||||
| MS_EXCEPTION(ValueError) << "Get real path failed. path=" << path; | |||||
| } | |||||
| file_name = realpath.value(); | |||||
| } | |||||
| OutputAnalyzedGraphWithType(file_name); | |||||
| oss << "\nThe function call stack (See file '" << file_name << "' for details):\n"; | |||||
| int index = 0; | int index = 0; | ||||
| std::string last_location_info = ""; | std::string last_location_info = ""; | ||||