summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2009-11-16 17:04:55 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2009-11-16 17:04:55 +0100
commit473ed1c34b98b0515031eef9bfd3a140d8bb2c92 (patch)
tree8eda4f2c25e202f333e809b3c252b08c7a0c6415 /doc
parentf8c20e22c8919dc1651af5c51cb5a6cf2a26481c (diff)
downloadabrt-473ed1c34b98b0515031eef9bfd3a140d8bb2c92.tar.gz
abrt-473ed1c34b98b0515031eef9bfd3a140d8bb2c92.tar.xz
abrt-473ed1c34b98b0515031eef9bfd3a140d8bb2c92.zip
add experimental saving of /var/log/Xorg*.log for X crashes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'doc')
-rw-r--r--doc/DESIGN15
-rw-r--r--doc/PLUGINS-HOWTO59
2 files changed, 43 insertions, 31 deletions
diff --git a/doc/DESIGN b/doc/DESIGN
index 78947238..7298b4c8 100644
--- a/doc/DESIGN
+++ b/doc/DESIGN
@@ -107,14 +107,19 @@ The key dbus calls served by abrt-process are:
Development plan
Since current code does not match the planned design, we need to gradually
-change the code to "morph" it into the desired shape. Planned steps:
+change the code to "morph" it into the desired shape.
-* make kerneloops plugin into separate daemon (convert it to a hook
- and get rid of "cron plugins" which are wrong idea since the begining)
-* Make abrtd dbus startable
+Done:
+
+* Make abrtd dbus startable.
+* Add -t TIMEOUT_SEC option to abrtd. {done}
* Make abrt-gui start abrtd on demand, so that abrt-gui can be started
even if abrtd does not run at the moment.
-* Add -t TIMEOUT_SEC option to abrtd.
+
+Planned steps:
+
+* make kerneloops plugin into separate daemon (convert it to a hook
+ and get rid of "cron plugins" which are wrong idea since the begining)
* ???
* ???
* ???
diff --git a/doc/PLUGINS-HOWTO b/doc/PLUGINS-HOWTO
index ef0c6ba6..d8467801 100644
--- a/doc/PLUGINS-HOWTO
+++ b/doc/PLUGINS-HOWTO
@@ -18,57 +18,64 @@ The files that were created when the application crashed (such as core dumps)
are all stored here. In addition, the plugins can write
their output files there, if any.
-Let's discuss the plugin types in detail:
+Plugin types in detail:
+
Action Plugin
-------------
-You use this type of plugin when you need some action to be
-performed when a crash is encountered.
-you have to override one method:
+This type of plugin is useful when you need some action to be performed
+immediately when a crash is encountered (using ActionsAndReporters = ...
+directive in abrt.conf), or if you need some action to be performed
+periodically ([Cron] section in the same file).
+
+You have to override one method:
+
+virtual void Run(const char *dir, const char *args);
+
+The first argument is a directory that contains the current debug
+dump, or all debug dumps for periodic actions.
+The second argument is a string with arguments (specified in config file).
-virtual void Run(const std::string& pActiveDir,
- const std::string& pArgs) = 0;
--This method runs the specified action.
- The first argument is a directory name. It can be either the current debug
- dump dir or a directory that contains all debug dumps.
- The second argument is a string with arguments specified for the action.
Analyzer Plugin
---------------
This plugin has to compute the UUID of the crash. Crashes differ, depending on
where they occur, for example crashes in the kernel differ from crashes in
userspace binaries, which differ from crashes in python scripts. Therefore,
-you need a plugin for each type of application that you want "abrt" to handle.
+you need a plugin for each type of application that you want abrt to handle.
-you have to override these methods:
+You have to override these methods:
-virtual std::string GetLocalUUID(const std::string& pDebugDumpPath) = 0;
+virtual std::string GetLocalUUID(const std::string& pDebugDumpPath);
- This method computes the local UUID of the crash.
-virtual std::string GetGlobalUUID(const std::string& pDebugDumpPath) = 0;
+virtual std::string GetGlobalUUID(const std::string& pDebugDumpPath);
- This method computes the global UUID of the crash.
-NOTE:The difference between local and global UUID is that the local UUID
+{something is fishy here}
+
+NOTE: The difference between local and global UUID is that the local UUID
is specific for the machine architecture on which the crash is encountered.
When the crash is reported, abrt has to use the "-debuginfo" packages
to render a global UUID, which should be independent of the specific
system (the same crash on different architectures/configurations can
yield different local UUIDs but has to have the same global UUID).
-virtual void CreateReport(const std::string& pDebugDumpPath) = 0;
+virtual void CreateReport(const std::string& pDebugDumpPath);
- This method creates the report about the crash and stores it
in the crash's directory.
+
Reporter Plugin
---------------
This plugin receives the entire finished crash report and
posts/reports it somewhere (e.g. logs it, mails it, posts
it on some web tool...)
-you have to override this method:
+You have to override this method:
virtual void Report(const crash_report_t& pCrashReport,
- const std::string& pArgs) = 0;
+ const std::string& pArgs);
-It is self-explanatory, that this method takes the report
and presents it somewhere to the world.
The second argument is a string with arguments specified for the reporter.
@@ -82,30 +89,30 @@ is not the same as some crash before. The database can be local, or in
some centralized location on the network.
you have to override these methods:
-virtual void Connect() = 0;
-virtual void DisConnect() = 0;
+virtual void Connect();
+virtual void DisConnect();
- connect and disconnect from the database
virtual void Insert(const std::string& pUUID,
const std::string& pUID,
const std::string& pDebugDumpPath,
- const std::string& pTime) = 0;
+ const std::string& pTime);
- insert an entry into the database: you use both UID (user ID) and UUID
(ID of the crash)
-virtual void Delete(const std::string& pUUID, const std::string& pUID) = 0;
+virtual void Delete(const std::string& pUUID, const std::string& pUID);
- delete an entry
-virtual void SetReported(const std::string& pUUID, const std::string& pUID) = 0;
+virtual void SetReported(const std::string& pUUID, const std::string& pUID);
- insert information into the database to say that this bug was already
reported (so for example the report plugins won't run several times
for the same bug)
-virtual const vector_database_rows_t GetUIDData(const std::string& pUID) = 0;
+virtual const vector_database_rows_t GetUIDData(const std::string& pUID);
- get database rows for the specified user ID
virtual const database_row_t GetUUIDData(const std::string& pUUID, const
- std::string& pUID) = 0;
+ std::string& pUID);
- get a database row for the specified user ID and UUID
@@ -124,7 +131,7 @@ PLUGIN_INFO(type, plugin_class, name, version, description, email, www)
- "description" is a string with the summary of what the plugin does
- "email" and "www" are strings with the contact info for the author
-for example:
+For example:
PLUGIN_INFO(REPORTER,
CMailx,
"Mailx",