Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  CrashAnnotations.h.in   Sprache: unbekannt

 
Spracherkennung für: .in vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef CrashAnnotations_h
#define CrashAnnotations_h

#include <cstddef>
#include <cstdint>

#include "mozilla/Maybe.h"
#include "nsStringFwd.h"

namespace CrashReporter {

using mozilla::Maybe;

// Typed enum representing all crash annotations
enum class Annotation : uint32_t {
${enum}
};

// Stringified crash annotation names
const char* const kAnnotationStrings[] = {
${strings}
};

// Type of each annotation
enum class AnnotationType : uint8_t {
  String = 0,   // Any type of string, const char*, nsCString, etc...
  Boolean = 1,  // Stored as a byte
  U32 = 2,      // C/C++'s uint32_t or Rust's u32
  U64 = 3,      // C/C++'s uint64_t or Rust's u64
  USize = 4,    // C/C++'s size_t or Rust's usize
};

// Type of each annotation
const AnnotationType kAnnotationTypes[] = {
${types}
};

// Allowlist of crash annotations that can be included in a crash ping
const Annotation kCrashPingAllowedList[] = {
${allowedlist}
};

// Annotations which should be skipped when they have specific values
struct AnnotationSkipValue {
  Annotation annotation;
  const char* value;
};

const AnnotationSkipValue kSkipIfList[] = {
${skiplist}
};

/**
 * Return the type of a crash annotation.
 *
 * @param aAnnotation a crash annotation
 * @returns The type of this annotation
 */
static inline AnnotationType TypeOfAnnotation(Annotation aAnnotation) {
  return kAnnotationTypes[static_cast<uint32_t>(aAnnotation)];
}

/**
 * Return the string representation of a crash annotation.
 *
 * @param aAnnotation a crash annotation
 * @returns A constant string holding the annotation name
 */
static inline const char* AnnotationToString(Annotation aAnnotation) {
  return kAnnotationStrings[static_cast<uint32_t>(aAnnotation)];
}

/**
 * Converts a string to its corresponding crash annotation.
 *
 * @param aValue the string to be converted
 * @return the annotation corresponding to the string or nothing
 */
Maybe<Annotation> AnnotationFromString(const nsACString& aValue);

/**
 * Checks if the given crash annotation is allowed for inclusion in the crash
 * ping.
 *
 * @param aAnnotation the crash annotation to be checked
 * @return true if the annotation can be included in the crash ping, false
 *         otherwise
 */
bool IsAnnotationAllowedForPing(Annotation aAnnotation);

/**
 * Checks if the annotation should be included. Some annotations are skipped if
 * their value matches a specific one (like the value 0).
 *
 * @param aAnnotation the crash annotation to be checked
 * @param aValue the contents of the annotation as a string
 * @return true if the annotation should be included, false otherwise
 */
bool ShouldIncludeAnnotation(Annotation aAnnotation, const char* aValue);

/**
 * Abstract annotation writer, this is needed only for code that writes out
 * annotations in the exception handler.
 */
class AnnotationWriter {
 public:
  virtual void Write(Annotation aAnnotation, const char* aValue,
                     size_t aLen = 0) = 0;
  virtual void Write(Annotation aAnnotation, bool aValue) = 0;
  virtual void Write(Annotation aAnnotation, uint64_t aValue) = 0;
};

#ifdef XP_WIN

extern void RecordDllAnnotations(bool* aBlocklistInitFailed,
                                 bool* aUser32BeforeBlocklist);

#endif  // XP_WIN

}  // namespace CrashReporter

#endif  // CrashAnnotations_h

[ Dauer der Verarbeitung: 0.31 Sekunden  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge