⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bug.h

📁 大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CHARMM并行计算。非常具有应用价值。
💻 H
字号:
//// bug.h//// Copyright (C) 1996 Limit Point Systems, Inc.//// Author: Curtis Janssen <cljanss@limitpt.com>// Maintainer: LPS//// This file is part of the SC Toolkit.//// The SC Toolkit is free software; you can redistribute it and/or modify// it under the terms of the GNU Library General Public License as published by// the Free Software Foundation; either version 2, or (at your option)// any later version.//// The SC Toolkit is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU Library General Public License for more details.//// You should have received a copy of the GNU Library General Public License// along with the SC Toolkit; see the file COPYING.LIB.  If not, write to// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.//// The U.S. Government is granted a limited license as per AL 91-7.//#ifdef __GNUG__#pragma interface#endif#ifndef _util_misc_bug_h#define _util_misc_bug_h#include <util/class/class.h>#include <util/state/state.h>#include <util/ref/ref.h>namespace sc {/** The Debugger class describes what should be done when a catastrophicerror causes unexpected program termination.  It can try things such asstart a debugger running where the program died or it can attempt toproduce a stack traceback showing roughly where the program died.  Theseattempts will not always succeed.  */class Debugger: public SavableState {  protected:    char *prefix_;    char *exec_;    char *cmd_;    int debugger_ready_;    int debug_;    int traceback_;    int exit_on_signal_;    int sleep_;    int wait_for_debugger_;    int handle_sigint_;    int *mysigs_;    void init();    static Debugger *default_debugger_;  public:    Debugger(const char *exec = 0);    /** The KeyVal constructor understands the following keywords:        <dl>        <dt><tt>debug</tt><dd> Try to start a debugger when an error occurs.        Doesn't work on all machines. The default is true, if possible.        <dt><tt>traceback</tt><dd> Try to print out a traceback extracting        return addresses from the call stack.  Doesn't work on most        machines.  The default is true, if possible.        <dt><tt>exit</tt><dd> Exit on errors.  The default is true.        <dt><tt>wait_for_debugger</tt><dd> When starting a debugger go into        an infinite loop to give the debugger a chance to attach to the        process.  The default is true.        <dt><tt>sleep</tt><dd> When starting a debugger wait this many        seconds to give the debugger a chance to attach to the process.        The default is 0.        <dt><tt>handle_defaults</tt><dd> Handle a standard set of signals        such as SIGBUS, SIGSEGV, etc.  The default is true.        <dt><tt>prefix</tt><dd> Gives a string that is printed before each        line that is printed by Debugger. The default is nothing.        <dt><tt>cmd</tt><dd> Gives a command to be executed to start the        debugger.  The default varies with machine.                </dl> */    Debugger(const Ref<KeyVal>&);    Debugger(StateIn&);    ~Debugger();    /** The debug member attempts to start a debugger        running on the current process. */    virtual void debug(const char *reason = 0);    /** The traceback member attempts a stack traceback     for the current process.  A symbol table must be saved for     the executable if any sense is to be made of the traceback.     Tracebacks are currently available only for a limited number     of architectures. */    virtual void traceback(const char *reason = 0);    /// Turn on or off debugging on a signel.  The default is on.    virtual void set_debug_on_signal(int);    /// Turn on or off traceback on a signel.  The default is on.    virtual void set_traceback_on_signal(int);    /// Turn on or off exit after a signel.  The default is on.    virtual void set_exit_on_signal(int);    /** Turn on or off running an infinite loop after the debugger is started.        This loop gives the debugger a chance to attack to the process.        The default is on. */    virtual void set_wait_for_debugger(int);    /// The Debugger will be actived when sig is caught.    virtual void handle(int sig);    /// This calls handle(int) with all of the major signals.    virtual void handle_defaults();    /// This sets a prefix which preceeds all messages printing by Debugger.    virtual void set_prefix(const char *p);    /// Set the prefix to the decimal represention of p followed by a ": ".    virtual void set_prefix(int p);    /** Sets the command to be exectuted when debug is called.        The character sequence "$(EXEC)" is replaced by the executable        name (see set_exec), "$(PID)" is replaced by the        current process id, and "$(PREFIX)" is replaced by the        prefix. */    virtual void set_cmd(const char *);    /// Calls set_cmd with a hopefully suitable default.    virtual void default_cmd();    /** Set the name of the exectuble for the current process.        It is up to the programmer to set this, even if the Debugger        is initialized with the KeyVal constructor. */    virtual void set_exec(const char *);    /// Called with signal sig is received.  This is mainly for internal use.    virtual void got_signal(int sig);    /// Set the global default debugger.  The initial value is null.    static void set_default_debugger(const Ref<Debugger> &);    /// Return the global default debugger.    static Debugger *default_debugger();    void save_data_state(StateOut&);};}#endif// Local Variables:// mode: c++// c-file-style: "CLJ"// End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -