可以从命令行运行 C++ 代码,但不能从 Visual Studio 中的调试模式运行

Posted

技术标签:

【中文标题】可以从命令行运行 C++ 代码,但不能从 Visual Studio 中的调试模式运行【英文标题】:can run C++ code from command line but not from debug mode in visual studio 【发布时间】:2013-08-09 21:56:46 【问题描述】:

我在调试模式下编译了下面的程序,没有任何错误。我可以从命令行运行 .exe 文件,但是当我尝试在 Visual Studio 中调试代码时,异常会从命令行抛出

DetectionInternalSettings* internal_settings =
           DetectionInternalSettingsFactory::createFromFileSystem(
                  "C:/data/card_detection_engine.yaml");

在命令行和调试模式下运行的行为不同之前遇到过这种情况的任何人。

int main(int argc, char **argv) 

    DetectionSettings settings;
    try
    
        DetectionInternalSettings* internal_settings =
        DetectionInternalSettingsFactory::createFromFileSystem("../data/card_detection_engine.yaml");
    
    catch (const MyException &e)
    
        fprintf(stderr, "Exception raised: %s\n", e.what().c_str());
        return 1;
    

    return 0;

我还进入了异常详细信息,这里是 ocrcarddetectionengine_sample.exe 中 0x76E1C41F 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x003FF0D0 处的 YAML::TypedBadConversion。

更多代码与createFromFileSystem相关

DetectionInternalSettingsFactory::createFromFileSystem(const std::string &configPath)  throw (MyException)

  return new DetectionInternalSettingsImpl(configPath);


struct DetectionInternalSettingsImpl : public DetectionInternalSettings 
    DetectionInternalSettingsImpl(const std::string &config_path) 
        if (config.ReadFromFilesystem(config_path)) 
            throw MyException("Bad configuration path.");
        
    

    ~DetectionInternalSettingsImpl()  

    Core::Detector::Configuration config;
;

【问题讨论】:

告诉我们createFromFileSystem 并告诉我们异常是什么...... 从命令行和 IDE 运行程序,你有不同的堆和不同的 CWD。我怀疑 CWD 是问题所在。 Ed S. 我在上面的问题中添加了更多代码 您是否链接到外部库?您是否在上一次完整的 Make 过程和上一次部分编译之间调整了 Visual Studio 的项目配置参数? 异常来自 config.ReadFromFilesystem,它是 YAML::TypedBadConversion - 您是否调试到 ReadFromFilesystem 以查看异常出现的位置?这可能是***.com/questions/12374691/… 建议的类型转换错误 【参考方案1】:

信任调试模式异常。它更彻底地测试您的代码实际在做什么,而命令行只是在等待问题发生。

在你的情况下,它们似乎没有发生,可能是因为你没有对指针变量做任何事情。

【讨论】:

以上是关于可以从命令行运行 C++ 代码,但不能从 Visual Studio 中的调试模式运行的主要内容,如果未能解决你的问题,请参考以下文章

命令在命令行上运行良好,但不能从任务计划程序运行

从命令行运行但不能通过 cron 运行时脚本运行良好

针对 Visual Studio 2012 本机 C++ 测试从命令行运行 mstest

我可以从 Eclipse 使用 Maven,但不能从命令行使用

PyQt QFileDialog getOpenFileName 不能从命令行工作(Windows)

我可以从 mysql 命令行运行 IF 语句吗? v 5.6