LLVM(3.7.0)pass has a core dump

I wrote a very simple pass. The code as follows(rude.cpp):
#include “llvm/Pass.h”
#include “llvm/IR/Function.h”
#include “llvm/Support/raw_ostream.h”
#include “llvm/IR/BasicBlock”

using namespace llvm;

namespace {
struct rude : public FunctionPass {
static char ID;
rude() : FunctionPass(ID) {}

bool runOnFunction(Function &F) override {
errs() << "Hello,I’m rude: ";
errs().write_escaped(F.getName()) << ‘\n’;

for(Function::iterator b=F.begin(),be=F.end();b!=be;++b)
{
errs()<<“\n\tBB:”;
for(BasicBlock::iterator i=b->begin(),ie=b->end();i!=ie;++i)
{
errs()<<“\n\tanalysis instructions”;
}
}
return false;
}
};
}

char Hello::ID = 9;
static RegisterPass X(“rude”, “rude Pass”, false, false);

then I use command :
opt -load XX/Debug+Assertion/rude.so <test1.bc> /dev/null to run the rude.so file .
the error as follows:

​#0 0x222Bd05 llvm::sys::PrintStackTrace(llvm::raw_ostream&) XX/LLVM3.7.0/llvm/lib/Support/Unix/Signals.inc/:437:0
#1 0x222901a PrintStackTraceSignalHandler(void*) XX/LLVM3.7.0/llvm/lib/Support/Unix/Signal.inc:495:0

I really don’t know why it is. can anyone help me?