gem5 v24.0.0.0
Loading...
Searching...
No Matches
debug.cc
Go to the documentation of this file.
1/*
2 * Copyright (c) 2017, 2020 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated
11 * unmodified and in its entirety in all distributions of the software,
12 * modified or unmodified, in source code or in binary form.
13 *
14 * Copyright (c) 2006 The Regents of The University of Michigan
15 * Copyright (c) 2010 The Hewlett-Packard Development Company
16 * All rights reserved.
17 *
18 * Redistribution and use in source and binary forms, with or without
19 * modification, are permitted provided that the following conditions are
20 * met: redistributions of source code must retain the above copyright
21 * notice, this list of conditions and the following disclaimer;
22 * redistributions in binary form must reproduce the above copyright
23 * notice, this list of conditions and the following disclaimer in the
24 * documentation and/or other materials provided with the distribution;
25 * neither the name of the copyright holders nor the names of its
26 * contributors may be used to endorse or promote products derived from
27 * this software without specific prior written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 */
41
42#include "pybind11/pybind11.h"
43#include "pybind11/stl.h"
44
45#include <map>
46#include <vector>
47
48#include "base/compiler.hh"
49#include "base/debug.hh"
50#include "base/output.hh"
51#include "base/trace.hh"
52#include "sim/debug.hh"
53
54namespace py = pybind11;
55
56namespace gem5
57{
58
59static void
60output(const char *filename)
61{
62 OutputStream *file_stream = simout.find(filename);
63
64 if (!file_stream)
65 file_stream = simout.create(filename);
66
68}
69
70static void
71activate(const char *expr)
72{
74
75 trace::getDebugLogger()->addActivate(activate);
76}
77
78static void
79ignore(const char *expr)
80{
81 ObjectMatch ignore(expr);
82
83 trace::getDebugLogger()->addIgnore(ignore);
84}
85
86void
87pybind_init_debug(py::module_ &m_native)
88{
89 py::module_ m_debug = m_native.def_submodule("debug");
90
91 m_debug
92 .def("getAllFlagsVersion",
93 []() { return debug::AllFlagsFlag::version(); })
94 .def("allFlags", &debug::allFlags, py::return_value_policy::reference)
95
96 .def("schedBreak", &schedBreak)
97 ;
98
99 py::class_<debug::Flag> c_flag(m_debug, "Flag");
100 c_flag
101 .def_property_readonly("name", &debug::Flag::name)
102 .def_property_readonly("desc", &debug::Flag::desc)
103 .def("enable", &debug::Flag::enable)
104 .def("disable", &debug::Flag::disable)
105 .def_property("tracing",
106 [](const debug::Flag *flag) {
107 return flag->tracing();
108 },
109 [](debug::Flag *flag, bool state) {
110 if (state) {
111 flag->enable();
112 } else {
113 flag->disable();
114 }
115 })
116 .def("__bool__", [](const debug::Flag *flag) {
117 return (bool)*flag;
118 })
119 ;
120
121 py::class_<debug::SimpleFlag>(m_debug, "SimpleFlag", c_flag)
122 .def_property_readonly("isFormat", &debug::SimpleFlag::isFormat)
123 ;
124 py::class_<debug::CompoundFlag>(m_debug, "CompoundFlag", c_flag)
125 .def("kids", &debug::CompoundFlag::kids)
126 ;
127
128
129 py::module_ m_trace = m_native.def_submodule("trace");
130 m_trace
131 .def("output", &output)
132 .def("activate", &activate)
133 .def("ignore", &ignore)
134 .def("enable", &trace::enable)
135 .def("disable", &trace::disable)
136 ;
137}
138
139} // namespace gem5
ObjectMatch contains a vector of expressions.
Definition match.hh:57
OutputStream * create(const std::string &name, bool binary=false, bool no_gz=false)
Creates a file in this directory (optionally compressed).
Definition output.cc:210
OutputStream * find(const std::string &name) const
Finds stream associated with an open file or stdout/stderr.
Definition output.cc:247
std::ostream * stream() const
Get the output underlying output stream.
Definition output.hh:62
static int version()
Definition debug.hh:147
const std::vector< Flag * > & kids() const
Definition debug.hh:130
std::string name() const
Definition debug.hh:77
virtual void enable()=0
virtual void disable()=0
std::string desc() const
Definition debug.hh:78
bool tracing() const
Definition debug.hh:80
bool isFormat() const
Checks whether this flag is a conventional debug flag, or a flag that modifies the way debug informat...
Definition debug.hh:113
Logging wrapper for ostreams with the format: <when>: <name>: <message-body>
Definition trace.hh:137
atomic_var_t state
Definition helpers.cc:211
FlagsMap & allFlags()
Definition debug.cc:75
void enable()
Enable/disable debug logging.
Definition trace.cc:93
void setDebugLogger(Logger *logger)
Delete the current global logger and assign a new one.
Definition trace.cc:84
void disable()
Definition trace.cc:99
Logger * getDebugLogger()
Get the current global debug logger.
Definition trace.cc:68
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
void pybind_init_debug(py::module_ &m_native)
Definition debug.cc:87
static void ignore(const char *expr)
Definition debug.cc:79
static void activate(const char *expr)
Definition debug.cc:71
OutputDirectory simout
Definition output.cc:62
static void output(const char *filename)
Definition debug.cc:60
void schedBreak(Tick when)
Cause the simulator to execute a breakpoint.
Definition debug.cc:86

Generated on Tue Jun 18 2024 16:24:06 for gem5 by doxygen 1.11.0