Еще раз: против кода: точка останова игнорируется, потому что сгенерированный код не найден (проблема с исходной картой?) - PullRequest
0 голосов
/ 05 февраля 2020

Я нахожусь в процессе разработки аддона Node c ++. Как только я запускаю программу, точки останова становятся серыми, и я получаю сообщение об ошибке в VS CODE: «Точка останова игнорируется, потому что сгенерированный код не найден».

«$ {workspaceFolder} / build / Debug /» содержит :

    Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       05.02.2020     14:28                obj
-a----       05.02.2020     15:07            824 hello.exp
-a----       05.02.2020     15:07        8738912 hello.ilk
-a----       05.02.2020     15:07           1686 hello.lib
-a----       05.02.2020     15:07        3566179 hello.map
-a----       05.02.2020     15:07        1875456 hello.node
-a----       05.02.2020     15:07        8835072 hello.pdb

В "$ {workspaceFolder}" также есть "hello. cc", который компилируется и запускается без ошибок: [] [1] `

// hello.cc
#include <sstream>
#include <napi.h>
class DataprocessingAsyncWorker : public Napi::AsyncWorker {
    public:
    static Napi::Value Create(const Napi::CallbackInfo& info) {
        if (info.Length() != 1) {
            return Reject(info.Env(), "MissingArgument");
        } else if (!info[0].IsString()) {
            return Reject(info.Env(), "InvalidArgument");
        }
        std::string input = info[0].As<Napi::String>().Utf8Value();
        DataprocessingAsyncWorker* worker = new DataprocessingAsyncWorker(info.Env(), input);
        worker->Queue();
        return worker->deferredPromise.Promise();
    }
    protected:
    static Napi::Value Reject(Napi::Env env, const char* msg) {
        Napi::Promise::Deferred failed = Napi::Promise::Deferred::New(env);
        failed.Reject(Napi::Error::New(env, msg).Value());
        return failed.Promise();
    }
    void Execute()  {
        if(input.size() < 1) {
            SetError("EmptyName");
            return;
        }
        std::stringstream str;
        str << "hello, " << input;
        result = str.str();
    }
    virtual void OnOK()  {
        deferredPromise.Resolve(Napi::String::New(Env(), result));
    }

    virtual void OnError(const Napi::Error& e)  {
        deferredPromise.Reject(e.Value());
    }
    private:
    DataprocessingAsyncWorker(napi_env env, std::string& name) : Napi::AsyncWorker(env), input(name), result(), deferredPromise(Napi::Promise::Deferred::New(env)) { }
    std::string input;
    std::string result;
    Napi::Promise::Deferred deferredPromise;
};
Napi::Object Init(Napi::Env env, Napi::Object exports) {
    return Napi::Function::New(env, DataprocessingAsyncWorker::Create);
}
NODE_API_MODULE(addon, Init)

static Napi::Value Reject(Napi::Env env, const char *msg)
{
    Napi::Promise::Deferred failed = Napi::Promise::Deferred::New(env);
    failed.Reject(Napi::Error::New(env, msg).Value());
    return failed.Promise();
}`

Поэтому я не могу понять это сообщение об ошибке.

Запуск файла. json: [] [2]

{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
    {
        "name": "(gdb) Anfügen",
        "type": "cppdbg",
        "request": "attach",
        "program": "${workspaceFolder}/build/Debug/hello.node",
        "processId": "${command:pickProcess}",
        "MIMode": "gdb",
        "miDebuggerPath": "D:/Downloads/x86_64-w64-mingw32-gdb-7.1.90.20100730/mingw64/bin/gdb.exe",
        "preLaunchTask": "npm: build:dev",
        "setupCommands": [
            {
                "description": "Automatische Strukturierung und Einrückung für \"gdb\" aktivieren",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ]
    },
    {
        "type": "node",
        "request": "launch",
        "name": "Launch Program",
        "program": "${workspaceFolder}\\server\\server.js"
    }
]

}

package. json: [] [3]

   {
  "name": "loopback-example-user-management",
  "version": "1.0.0",
  "description": "LoopBack user management example",
  "main": "server/server.js",
  "engines": {
    "node": ">=6"
  },
  "scripts": {
    "build:dev": "node-gyp -j 16 build --debug",
    "build": "node-gyp -j 16 build",
    "rebuild:dev": "node-gyp -j 16 rebuild --debug",
    "rebuild": "node-gyp -j 16 rebuild",
    "clean": "node-gyp clean"
  },
  "dependencies": {
    "bindings": "^1.5.0",
    "body-parser": "^1.10.0",
    "compression": "^1.0.3",
    "cors": "^2.8.1",
    "express": "^4.17.1",
    "loopback": "^3.0.0",
    "loopback-boot": "^2.4.0",
    "loopback-component-explorer": "^6.3.1",
    "loopback-connector-mongodb": "^4.2.0",
    "mongodb": "^3.1.13",
    "monk": "^7.1.2",
    "morgan": "^1.9.1",
    "node-addon-api": "^2.0.0",
    "serve-favicon": "^2.0.1",
    "strong-error-handler": "^3.2.0"
  },
  "devDependencies": {
    "jshint": "^2.5.6",
    "tape": "^4.2.0"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/strongloop/loopback-example-user-management.git"
  },
  "license": "MIT",
  "author": "IBM Corp."
}

Существует также задача . json (Я был вдохновлен [Отладка NodeJS C ++ дополнений с использованием кода VS] [ 4]): [] [5]

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558 
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "type": "npm",
            "script": "build:dev",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

VS Код системной информации: [] [6]

VS Code system info: 
Version: 1.41.1 (user setup)
Commit: 26076a4de974ead31f97692a0d32f90d735645c0
Date: 2019-12-18T14:58:56.166Z
Electron: 6.1.5
Chrome: 76.0.3809.146
Node.js: 12.4.0
V8: 7.6.303.31-electron.0
OS: Windows_NT x64 10.0.17763

Заранее спасибо, хотя этот вопрос задавался много раз .

...