Kapitel 13

Alle Codedateien dieses Kapitels herunterladen

13_1_PrintfDebugging.cpp

Datei herunterladen

#include <iostream>
#include <memory>

int main()
{
  std::cout << "## 1" << std::endl;
  std::shared_ptr<int> pointer;
  std::cout << "## 2" << std::endl;
  pointer = 0;
  std::cout << "## 3" << std::endl;
  std::cout << *pointer << std::endl;
  std::cout << "## 4" << std::endl;
  *pointer = 17;
  std::cout << "## 5" << std::endl;
  return 0;
}
// Achtung, dieses Beispiel provoziert einen nullpointer!

13_2_Logdatei.cpp

Datei herunterladen

#include <ctime>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <memory>
#include <string>

class Logger
{
 public:
  Logger()
  {
    outputFile = std::ofstream("log.txt", std::ios_base::app);
    writeTime(outputFile);
    outputFile << " --Logging gestartet--\n";
    outputFile.flush();
  }
  void log(const std::string& line)
  {
    writeTime(outputFile);
    outputFile << " " << line << "\n";
    outputFile.flush();
  }
 private:
  std::tm currentTime()
  {
  }
  void writeTime(std::ofstream& stream)
  {
    // Das aktuelle Datum abrufen
    std::time_t now = std::time(0);
    std::tm time;
    localtime_s(&time, &now);
    // Hinweis: Wenn Sie nicht unter Windows programmieren:
    // localtime_r(&now, &time);
    stream << std::put_time(&time, "%Y-%m-%d %H:%M:%S");
  }
  std::ofstream outputFile;
};

int main()
{
  Logger logger;
  logger.log("1");
  std::shared_ptr<int> pointer;
  logger.log("2");
  pointer = 0;
  logger.log("3");
  std::cout << *pointer << std::endl;
  logger.log("4");
  *pointer = 17;
  logger.log("5");
  return 0;
}
// Achtung, dieses Beispiel provoziert einen nullpointer!

13_3_Debugger.cpp

Datei herunterladen

#include <iostream>

int main()
{
  int input;
  std::cout << "Zahl eingeben: ";
  std::cin >> input;
  if (input = 4)
  {
    std::cout << "vier: " << input << std::endl;
  }
  return 0;
}
// Achtung, dieses Beispiel ist absichtlich fehlerhaft!