Я работаю над большой базой кода C ++, которую я компилирую с помощью Borland C ++ (6.0) Builder. Я ввел код, чтобы при выполнении сценария можно было записать каждый метод, который получил удар.
По этой причине я сохраняю глобальный вектор и выполняю импорт файла, содержащего глобальную переменную.
Заголовочный файл (Global.h), имеющий глобальную переменную-
#include <iostream>
#include <vector>
#include <string>
using namespace std;
extern vector<string> tracerVector;
и файл реализации, Global.cpp-
#include "Global.h"
vector<string> tracerVector;
Я включаю заголовочный файл во все файлы, которые я хочу отследить.
Ниже приведен только метод ввода образца.
#include <vcl.h>
#pragma hdrstop
#include "MainWindow.h"
#include "Product.h"
#include "Global.h"
using namespace std;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TmainForm *mainForm;
//---------------------------------------------------------------------------
__fastcall TmainForm::TmainForm(TComponent* Owner): TForm(Owner)
{
TComponent *senderObj = (TComponent*)Owner;
std::string injection = ("Type:" + AnsiString(senderObj->ClassName()) + " Object:" + AnsiString(senderObj->Name)).c_str();
std::string finalStatement = (injection + " methodName:TmainForm").c_str();
if(!tracerVector.empty()){
if(tracerVector.back() != finalStatement){
tracerVector.push_back(finalStatement);
}
}
else if(tracerVector.empty()){
tracerVector.push_back(finalStatement);
}
}
При малом сценарии с точки зрения нет. из обязательных методов, работает нормально, но если нет. из обязательных методов становится больше, я получаю следующее исключение -
size_type size() const { return this->_M_finish - this->_M_start; }
Я подозреваю, что мой глобальный размер вектора вызывает это исключение. Пожалуйста, предложите мне, как я могу держать весь путь выполнения. Мне нужно записать содержимое этого глобального вектора в файл, когда выполнение завершено и пользователь выходит из приложения.